0

次の配列の繰り返しに問題があります。jt最初のコマンドの出力からわかるように、「food」と「drink」というフレーズを含む配列を作成したいと思います。このコマンドはglobal_tags、各タグに次のフレーズを持つ 2 つのアイテムから構築されます。この場合は、foodまたはdrink。最後の行に見られるように、2 つの埋め込み配列を取得する理由がわかりません。

1.9.3p392 :043 > m.global_tags.map { |t| puts t.tag.phrase }
drink
food
 => [nil, nil] 
1.9.3p392 :044 > jt=[]
 => [] 
1.9.3p392 :045 > m.global_tags.map { |t| jt << t.tag.phrase }
 => [["drink", "food"], ["drink", "food"]] 
1.9.3p392 :046 >

また、構文を短くしようとしています。これは機能しているように見えますが、これがRubyの用語で醜いと見なされるかどうかはわかりません(?)

1.9.3p392 :050 > m.global_tags.map(&:tag).map(&:phrase)
 => ["drink", "food"] 

助けてくれてありがとう

4

1 に答える 1

2
  1. からの戻り値として 2 つの埋め込み配列を取得しますが.map、そうではありませんjt。副作用だけが必要な場合は、.each
  2. これは、配列を 2 回トラバースする必要があるため、パフォーマンスが低下します。

m.global_tags.map { |t| t.tag.phrase }必要な結果を返します。

于 2013-05-22T20:05:57.247 に答える