「?」を持つための基本的な違いは何ですか? every?
ではなく、some
クロージャの機能ですか?なぜ "every every?" 「?」どこで「何人か」は「?」を持っていない。 Clojureで?
user> (every? true? [true true false])
false
user> (some true? [true false false])
true
ありがとうございます。
「?」を持つための基本的な違いは何ですか? every?
ではなく、some
クロージャの機能ですか?なぜ "every every?" 「?」どこで「何人か」は「?」を持っていない。 Clojureで?
user> (every? true? [true true false])
false
user> (some true? [true false false])
true
ありがとうございます。
every?
はtrueまたはfalseを返します。疑問符が付いてきます。 some
はブール値を返さず、「最初に論理値が返された真の値」を返し、それ以外の場合はnil
を返します。コレクション内の最初の要素が述語に渡さ
user=> (some #(if (= 0 %) 1 0) [1 3 5 0 9])
0
、述語が論理的に真である、0に評価されるので、some
リターンはあなたが見ることができます0:
は、ここで私が思い付いたラメ例ですsome
は真または偽を戻していません。
したがってevery?
は、trueまたはfalseを返すため、疑問符が付けられます。 some
は、pred
またはnilによって返される値を返します。したがって、疑問符は表示されません。
いくつかは必ずしもブール値を返すわけではありませんが、いつもそうです。 documentation.
は、collの中の任意のxに対して 他にnilを(predはx)の最初の論理真の値を返します参照してください。一つの一般的なイディオムはpredをとしてセットを使用することで、例えば ため、これは戻ります:フレッド場合:フレッドは、そうでなければゼロシーケンスである: (一部#{:フレッド}コル)
おかげ。私はもう1つを試して、それを明確にします。 '(some#{2 3 4 5} [2 3 4 5 6])'はo/p '2'を与える。私は、 '何人か 'がブール値を返すことを期待していました。 Arrgh。とにかく感謝します。 – nishnet2002
@nestle:これは良い例です –
さらに、ブール関数を使ってブール値を返す場合は、ブール関数でラップできます。(ブール値(いくつかの#{2 3 4 5} [2 3 4 5 6] ))=> true –