2012-03-23 14 views
2

ブロック内で使用するif文でgrepsの戻り値を取得する方法は?ruby​​ - if文でgrepsの戻り値を代入する

colors = ["red", "blue", "white"] 

if color = colors.grep(/^b/)    # Would be nice to capture the color blue 
    puts "Found #{color.first}."    # with the regex, and pass it down to block 
else 
    puts "Did not find the first color." 
end 

どうやってこれを表現できますか?

答えて

4

をあなたはこのような何かを行うことができます配列をチェックし、それが一度に空であるかどうかを確認します。 found.firstがほしいのなら、私はJakub'sと一緒に行くだろう。

+0

私はあなたのヒントを取って、これは少し意味がないことに気付きました。それは私が推測するベッドの時間です。 –

+0

@NiklasB .:必ずしも無意味ではなく、時には遊び心があるのが良いです。 –

1

あなたは何をしようとしているのか分かりません。しかし、あなたはcolorがあれば条件の文字列"blue"になりたい、あなたはこの試みることができる何も見つからトリガー他の条件場合場合:キャプチャする

if (found = colors.grep(/^b/)).empty? 
    puts "Did not find the first color." 
else 
    puts "Found #{found.first}." 
end 

colors = ["red", "blue", "white"] 

if color = colors.grep(/b/).first 
    puts "Found #{color}." 
else 
    puts "Did not find the first color." 
end 
0

「これを別の方法で表現するにはどうすればよいですか」と尋ねたので、別の選択肢があります。

matches = colors.select{ |c| c.start_with? "b"} 

これは、( "b"で始まる)一致する色の配列を表示します。次に、あなたは以下を行うことができます:

if matches.empty? 
    puts "Did not find the first color." 
else 
    puts "Found #{matches.first}." 
end 
関連する問題