これはおそらく単純な質問ですが、以下のコード行で「#::」を達成することは何ですか。それは短所の特別な差異ですか?
def from(n: Int): Stream[Int] = n #:: from(n + 1)
これはおそらく単純な質問ですが、以下のコード行で「#::」を達成することは何ですか。それは短所の特別な差異ですか?
def from(n: Int): Stream[Int] = n #:: from(n + 1)
この演算子は、リストではなくストリームを構築するために使用されます。単純な短所を持つ同じコード スニペットを検討してください。
def from(n: Int): List[Int] = n :: from(n + 1)
このメソッドを実行すると、結果は になりStackOverflowError
ます。ただし、 with Stream[Int]
tail は必要な場合にのみ遅延評価されます (そして、既に計算された値が記憶されます)。
::
for Lists と同等ですが、Streams で使用されます
つまり、尾があるストリームの頭n
になりますfrom(n+1)
Stream オブジェクトを作成することを意味します。
for Listと同じですcons
-- 常にリストを作成する代わりに::
、常に#::
ストリームを作成します。
やや遅いですが、http://scalex.org/があります。これは、そのようなものをロックアップするのに非常に便利です (Google は、英数字以外のものについては本当に混乱しています)。幸運を!