問題タブ [scala-collections]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala create List [Int]
List[Int]
1から100を含むをすばやく作成するにはどうすればよいですか?
試しList(0 to 100)
ましたが、戻りますList[Range.Inclusive]
ありがとう
scala - Scala 2.8 でコレクションを実装するにはどうすればよいですか?
API を作成しようとして、2.8(.0-beta1) の Scala のコレクションに苦労しています。
基本的に私が必要とするのは、次のようなものを書くことです:
- 特定のタイプの不変セットに機能を追加します
- ここで、filter や map などのすべてのメソッドは、すべてをオーバーライドすることなく同じ型のコレクションを返します (これが、最初に 2.8 を選択した理由です)。
- これらのメソッドを通じて取得するすべてのコレクションは、元のコレクションが持っていたのと同じパラメーターで構築されます (SortedSet が暗黙的に順序付けを処理する方法と同様)。
- これは、セットの実装とは関係なく、それ自体がトレイトです。
さらに、たとえば HashSet に基づいて、デフォルトの実装を定義したいと考えています。トレイトのコンパニオン オブジェクトは、このデフォルトの実装を使用する場合があります。コレクション型を他のコレクション型にマップするためにビルダー ファクトリの全機能が必要かどうかはまだわかりません。
コレクション API の再設計に関する論文を読みましたが、それ以降少し変わったようで、詳細が欠けています。コレクションのソース コードも調べましたが、まだ一貫性があるかどうかはわかりません。
理想的には、必要な部分だけをステップバイステップで教えてくれる実践的なチュートリアルか、必要な部分を自分で判断できるようにすべての詳細の広範な説明のいずれかが欲しい. "Programming in Scala" のオブジェクトの等価性に関する章が気に入りました。:-)
しかし、新しいコレクションの設計をよりよく理解するのに役立つドキュメントや例へのポインタをいただければ幸いです。
scala - Scala の一時コレクション?
Clojure には、一時的なコレクションという非常に優れた概念があります。Scala (または F#) 用のものを提供するライブラリはありますか?
scala - 特定のコレクションタイプにブレークアウトする簡単な方法は?
私が欲しいのは、結果タイプがList [(Int、Int、Int)]になることです。私が見つけた唯一の方法は次のとおりです。
もっと短い方法はありますか?
scala - Scala 2.8コレクションで、TraversableタイプがIterableの上に追加されたのはなぜですか?
私は、あるためにはTraversable
、あなたは方法を持っているだけでよいことを知っていますforeach
。メソッドIterable
が必要です。iterator
Scala2.8コレクションのSIDと「FightingBitrotwithTypes」の論文はどちらも基本的Traversable
に追加された理由については言及していません。SIDは、「DavidMcIver...がIterableの一般化としてTraversableを提案した」とだけ述べています。
IRCに関する議論から、コレクションのトラバースが終了したときにリソースを再利用することと関係があるということを漠然と収集しましたか?
以下はおそらく私の質問に関連しています。には、奇妙に見える関数定義がいくつかありますTraversableLike.scala
。次に例を示します。
私は、次のように書かれただけではない正当な理由があると思います。
scala - Option が Iterable トレイトを直接拡張しないのはなぜですか?
Option
暗黙的に - に変換可能ですが、直接Iterable
実装するだけではないのはなぜですか:Iterable
編集: 実際には、2.8ではメソッドOption
を宣言するiterator
ため、それよりもさらに複雑です:
scala - 異なる equals/hashCode/compare 実装を使用するコレクションを Scala で作成できますか?
ID セットを作成する簡単な方法を探しています。グラフをたどっているときに特定のオブジェクトを「見た」かどうかを追跡できるようにしたいだけです。
Set は "==" (Scala の equals メソッド) を使用して要素を比較するため、通常の Set は使用できません。私が欲しいのは、「eq」を使用するセットです。
セット要素で equals を呼び出すのではなく、等価性をテストするためのアプリケーション指定のメソッドを使用する Set を Scala で作成する方法はありますか? オーバーライドできるある種の「wrapEquals」メソッドを探しましたが、見つかりませんでした。
Java の IdentityHashMap を使用できることはわかっていますが、もっと汎用的なものを探しています。
私が持っていた別のアイデアは、eq に関して equals を実装する別のオブジェクトで各セット要素をラップすることでしたが、新しい equals 実装を取得するためだけに大量の新しいオブジェクトを生成するのは無駄です。
ありがとう!
scala - Scalaでソートされたマップを作成するにはどうすればよいですか?
Scala(可変/不変)でソートされたマップを作成するにはどうすればよいですか?
arrays - scalaの配列とリストの違い
どのような場合に Array(Buffer) と List(Buffer) を使用する必要があります。私が知っている唯一の違いは、配列は不変であり、リストは共変であるということです。しかし、パフォーマンスやその他の特性についてはどうでしょうか?
generics - Traversableの継承とタイプパラメータ
私はScala2.8コレクションクラスのソースコードを研究しています。の階層について質問がありますscala.collection.Traversable
。次の宣言を見てください。
質問:なぜ型パラメーターでTraversable
拡張するのですか?なぜそうではないのですか?同じ構造の小さなプログラムを試してみましたが、次のように変更しようとすると、奇妙なエラーメッセージが表示されました。GenericTraversableTemplate
[A, Traversable]
[A, Traversable[A]]
Traversable[A]
@uncheckedVariance
での注釈の使用GenericTraversableTemplate
もこれに関係していると思いますか?(これは、物事を強制的に機能させるための一種の潜在的に危険なハッキングのようです...)。
編集-この質問の注釈に関するいくつかの有用な回答が見つかりました(これは、GenericTraversableTemplate
分散が異なる可変コレクションと不変コレクションの両方に使用されるためです)。
質問:階層を見ると、2回(1回はviaと1回はvia )Traversable
継承しますが、型パラメーターがわずかに異なります。これは正確にどのように機能しますか?異なるタイプのパラメーターがエラーを引き起こさないのはなぜですか?HasNewBuilder
TraversableLike
GenericTraversableTemplate