6

これはおそらく単純な質問ですが、以下のコード行で「#::」を達成することは何ですか。それは短所の特別な差異ですか?

def from(n: Int): Stream[Int] = n #:: from(n + 1)
4

4 に答える 4

11

この演算子は、リストではなくストリームを構築するために使用されます。単純な短所を持つ同じコード スニペットを検討してください。

def from(n: Int): List[Int] = n :: from(n + 1)

このメソッドを実行すると、結果は になりStackOverflowErrorます。ただし、 with Stream[Int]tail は必要な場合にのみ遅延評価されます (そして、既に計算された値が記憶されます)。

于 2012-11-15T22:16:56.937 に答える
6

::for Lists と同等ですが、Streams で使用されます

つまり、があるストリームのnになりますfrom(n+1)

于 2012-11-15T22:15:49.587 に答える
1

Stream オブジェクトを作成することを意味します。

for Listと同じですcons-- 常にリストを作成する代わりに::、常に#::ストリームを作成します。

于 2012-11-15T22:31:28.370 に答える
0

やや遅いですが、http://scalex.org/があります。これは、そのようなものをロックアップするのに非常に便利です (Google は、英数字以外のものについては本当に混乱しています)。幸運を!

于 2013-02-24T12:07:05.763 に答える