0

any?配列全体を処理し、配列に対して操作を実行して、一部の要素が返されるかどうかを確認する状況が発生しましたfalse

例: すべての真理値を出力したい。またfalse、配列内に何かがあることを確認したい:

def hel? 
  [true, false, true].any?{|x| p x; x}
end

上記の例では、最初の値 (つまり) のみが出力されtrue、 が返されますtrue。しかし、配列のすべての要素を出力して返すようにしたいfalse。それを行う他の方法はありますか?または同じことの変更はありますか?ありがとう :)

4

2 に答える 2

2

値を出力するには、次のようにします。

[true, false, true].each(&method(:p))

それらがすべて真実かどうかを確認するには、次のようにします。

[true, false, true].all?

両方を行うには、次のようにします。

[true, false, true].each(&method(:p)).all?

または、1 回の反復に入れることもできます。

[true, false, true].inject(true){|m, n| p(n) && m}
于 2013-02-05T08:12:16.290 に答える
0

配列を反復処理したい場合は、 を使用できますがEnumerable#each、ブール値は返されません。

def hel?
  [true, false, true].each{|x| p x; x}
end

すべての要素をチェックしたい場合は、次を使用できますEnumerable#all?

def hel?
  [true, false, true].all?{|x| p x; x}
end

ただし、どちらの場合も、同じ結果を得るにはブロックを変更する必要があります。

于 2013-02-05T07:41:46.627 に答える