問題タブ [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 コレクションの矛盾
Scala コレクション API のセットとリストの間に一貫性がないのはなぜですか?
たとえば、不変の Set と可変の Set があります。後者を使用する場合は、次のように簡単に実行できます。
ただし、変更可能な List 自体はありません。リストを使用して同様のコード スニペットを作成する場合、どのデータ構造を使用すればよいですか? LinkedList は変更可能ですが、 += メソッドが定義されていないため、良い候補のように思えます。ListBuffer は要件を満たしているようですが、リストではありません。
2.8 コレクションのドキュメントを読んだ後、MutableList がおそらく最適であるという結論に達しました。
scala.collection.mutable.List があればいいのにと思います。
scala - マップ上の Scala foldLeft
Map.foldLeft はどのように使用しますか? ドキュメントによると、次のようになります
しかし、私は苦労しています:
エラー: 有効な仮パラメータではありません
エラーは、k の前の開き括弧を指しています。
scala - マップやフィルターなどが適切なタイプを生成するように、scalaコレクションを実装します
デフォルト値のマップを実装しようとしていますが、フィルターやマップなどを可能な限りDefaultingMap
生成するようにしたいと思います。DefaultingMap
これが私の最初の実装です:
を使用するとタイプのオブジェクトを取得しますがDefaultingMap
、を使用すると取得filter
しませんmap
:
これらの2つの方法の違いmap
は、暗黙のをとるということのようCanBuildFrom
です。だから私はimplicit def
どこかにを提供する必要があることを収集しますCanBuildFrom
。私の最初の直感は、HashMapで行われたことを実行することでした。
これでコンパイルできると思いますが、メソッドを定義することは不可能であるため、このアプローチは機能empty
しません。必要なものを知る必要がありdefaultValue
ます。コンパニオンオブジェクトではなく、クラス自体でを定義できれば、そこで利用できるCanBuildFrom
ので大丈夫defaultValue
です。
どうすればこれを機能させることができますか?
design-patterns - 頻繁に遭遇する問題に対して、Scala で確立されている一般的なパターン/ソリューションは何ですか?
ボールを転がし始めます。
いくつかの要素が複数回含まれる可能性がある一連の要素が与えられた場合、典型的な要件の 1 つは、集計またはヒストグラムの形式でそれらをカウントすることです。
よく引用される解決策は次のとおりです。
では、Scala でよく遭遇する同様の問題に対して、他にどのような解決策があるのでしょうか?
scala - コレクションを拡張するときのScalaリターンタイプ
私が書いたら
クラスThingsはscala.collection.immutable.HashSet[Int]を拡張します
新しいもの+5
その結果は
res0:scala.collection.immutable.HashSet [Int] = Set(5)
結果をThingsタイプにするには、何をする必要がありますか?答えはここにあるのではないかと思いますが、何が起こっているのか理解するのに苦労しています。
scala - 新しいコレクションを反射的に作成するにはどうすればよいですか?
外部に保存したいコレクションのインスタンスがあり、元のコレクション タイプに復元します。例えば
f を「シリアル化」し、反射的に新しい Foo、f2 を作成し、f2.x に正しい結果を入力したいと考えています。
を実行することで新しい Foo を作成できますがclassOf[Foo].newInstance
、正しいコレクション タイプを作成してデータを入力するにはどうすればよいでしょうか。
ここで多くの仮定を立てていることに注意してください。注目すべきは、1) fx の型を知っており、その型をシリアル化することさえできるということです。2) x の内容を、値を保持するものにシリアル化しています。 ) 「標準」のシリアライゼーションは使いたくない
元のコレクションで利用可能なビルダーを使用しようとしましたが、それがどのように機能するのかよくわかりません。
ありがとう、
デイブ
scala - マップのマップの可変マップの値にアクセスして更新する方法
私は3つのレベルのデータ構造を持っています(読みやすくするためのインデントと改行):
最も内側のデータ(スコア)にアクセスするには、多くの入力が必要です。
スコアの値を変更するためのより冗長な方法はありますか?
私はScalaの初心者なので、上記のコードの他のすべての観察も歓迎します。
arrays - Scala: コレクションを反復処理して配列にデータを入力する最良の方法
ここでscala noob、私はxmlノードのコレクション(Seq)を持っており、各ノードに基づいて配列を設定したいと思います:
それは機能しますが、私には「スカラっぽい」とは思えません。もっと良い方法があると確信しています..
何かアイデアはありますか?
scala - foldRightに追加のパラメーターを渡す
ScalaのList.foldRightに提供されている関数に追加のパラメーターを渡す方法はありますか?
いくつかのサンプルコード:
私が興味を持っているオブジェクトはですがactor
、Superviseの作成に使用されている場合は表示されません。
PS:私はScalaにかなり慣れていないので、これがFAQである場合は、謝罪を受け入れてください(該当するヒットがない大規模なグーグルにもかかわらず)。
arrays - Map [Int、Map [Int、X]]をArray[Array[X]]に再帰的に変換します
整数キーのマップ間で対応する配列に変換する関数を作成しようとしています。基本ケースは完了しましたが、再帰ケースを書き込もうとしています(つまり、多次元配列:Map [Int、Map [Int、X]]をArray [Array [X]]に変換します)。
このタスクは、配列の大きさを事前に知らずにストリームから配列を構築する必要性から生じました。これにより、要素がランダムな順序でストリームから外れる可能性と、重複する要素がストリームから外れる可能性があります。
私はそれを行う関数を持っています:
マップにキーkが含まれているが、キーiが含まれていない場合(0 <= i <k)、コードが失敗することに注意してください。これは私の目的には問題ありません。
今、私は任意の深さの多次元配列に対して同じことをしようとしています。たとえば、Map [Int、Map [Int、X]]からArray[Array[X]]に変換します。残念ながら、私はタイプにつまずきました。上記をベースケースとして使用して、これまでに私が持っているものは次のとおりです。
これは私が得るエラーです:
'=>'が必要ですが、'forSome'が見つかりました。
これは教育的な目的であるため、フィードバックをいただければ幸いです。具体的には、私のひどくJavaに見えるコードのコード批評、同じことを行う既存のscala関数、またはこれらの配列を構築するための代替方法の提案をいただければ幸いです。