問題タブ [scala]
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 ライブラリは、パッケージを Java と命名するための同じ逆ドメイン規則に従いますか?
アクター プログラミング モデルの感触を得るために、小さな Scala ライブラリを作成しようとしています。
私が見つけたコード例では、一部のライブラリはパッケージに逆ドメイン (org.foo.bar など) を使用し、一部のライブラリは使用しません (単に簡潔にするため)。
Scala ライブラリが Java と同じパッケージ命名規則を使用することは賢明ですか? より一般的には、Python がPEP 8で持っているような適切な Scala コーディング スタイルの提案はありますか?
はい、おそらく馬の前にカートを置きますが、揺さぶられた慣習のいくつかを見ることで、言語のまともな感触をつかむことができることがわかりました.
ありがとう
scala - this.type を新しいインスタンスに使用できない理由
this.type を使用して、不変のケース クラスの新しいインスタンスを作成するメソッドを定義できるようにしたいと考えています。このようなもの:
残念ながら、コンパイラは文句を言います
新しいケース クラスが this.type と一致しないのはなぜですか?
this.type を Base.new_with_changes で Base に変更し、Derived.new_with_changes で Derived に変更すると動作しますが、this.type の優れた点を見逃しているようです。
編集:質問の本当の意図は、ダウンの呼び出し元がダウンキャストを実行することを宣言する同等の方法をScalaに持たない理由です。これは、this.typeとほぼ同じ方法ですが、一般的なタイプの場合です。簡単にはいかないと思いますが、いいと思います。
java - Linux / Java/Scalaで接続されているDVDドライブを列挙する
私のScala(Java上で実行)アプリケーションで、DVDメディアを含むすべてのドライブのリストを取得したいと思います。たとえば、次のようなものです。
- / dev/scd0スタートレックDS9DVD1
- / dev / scd0 4400 DVD1
ディスクの名前を取得できるかどうかはわかりませんが、とにかくパスは私にとって重要なことです。
私は純粋なJava/Scalaソリューション(file.ioのものを使用)を好みます。それが不可能な場合は、適切なLinuxファイル(/ proc / somethingなど)にアクセスすることもできます。
前もって感謝します!
syntax - Scala でのシンボル リテラルのユース ケースの例は何ですか?
シンボル リテラルの使用は、私が Scala について調べた限りではすぐにはわかりません。誰かが実際の使用法を共有したいと思いますか?
シンボル リテラルでカバーされている特定の Java イディオムはありますか? 似た構造を持つ言語は? 私は Python のバックグラウンドを持っていますが、その言語に類似したものがあるかどうかはわかりません。
「HelloWorld」と「HelloWorld」を使用する動機は何ですか?
ありがとう
java - 正規表現パターンに一致する最初の文字セットを特定できますか?
の特定のインスタンスによって文字列の最初の文字として一致する可能性のあるすべての文字のセットを計算できるようにしたいと考えていますjava.util.regex.Pattern
。より正式には、特定の正規表現に相当する DFA を考えると、開始状態からのすべての出力遷移のセットが必要です。
例:
セットfirst
には次の要素が含まれている必要があります。
何か案は?私は自分で DFA を構築し、関連する状態をそのように決定できることをよく知っていますが、そのような面倒なことは避けたいと思います (読んでください: それは私にとってそれほど価値がありません)。私のホスト言語は実際には Scala であるため、すべてのコア Scala ライブラリにアクセスできることに注意してください (それだけの価値があります)。
scala - Scala: Java のように PriorityQueue を使用する方法はありますか?
scala.collection.mutable.PriorityQueue で使用したいクラスがありますが、この 1 つの目的のためだけに Ordered[A] にしたくありません。PriorityQueue に関して使用したい順序を、クラスの自然な順序とは見なしません。
したがって、私の PriorityQueue では、値を「順序」で並べ替えたいと思います。ただし、2 つのオブジェクトが同じシーケンスを持っているからといって、それらの「値」の内容が異なる可能性があるため、それらが自然に等しくなるわけではありません。
ここで、Java では、別の Comparator オブジェクトを PriorityQueue に提供できると便利です。私の Comparator は、単に「シーケンス」に関してオブジェクトを並べ替え、それらの「値」を無視します。
PriorityQueue クラスは、「A <% Ordered[A]」でパラメータ化する必要があります
私が読んだことから、これは、私のクラスが Ordered[A] を拡張する必要があるか、Ordered[A] への「暗黙的な定義」型変換を提供する必要があることを意味します。
Java ソリューションはより「機能的」であるように思われ、クラス階層に強制的に参加させたり、クラスにモンキーパッチを適用したりする代わりに、Comparator 関数のようなオブジェクトを渡すことができます。
PrioirityQueue の使用に代わる方法があることは理解していますが、ここで Scala の学習曲線にぶつかりそうで、この設計上の決定を十分に検討せずにあきらめたくありません。
これは Scala ライブラリでの不幸な決定にすぎないのでしょうか、それとも PriorityQueue をより使いやすく「機能的」にする何らかの呼び出し規約を誤解しているのでしょうか?
ありがとう
java - Scala のツールの現状はどうなっていますか?
この 1 年間、Scala 言語に関する誇大宣伝がますます増えているのを耳にしました。Scala サポートを IDE に統合する計画がある既存のプロジェクトがいくつかあることは知っています。ただし、統合が実際にどれほど優れているかは必ずしも明確ではありません。
Eclipse や Netbeans が Java 言語に対して行うのと同様に、現在 Intellisense をサポートしていますか? インスタント検証もサポートしていますか?
syntax - Scala でクラス変数を定数として使用する
私は Scala の学習に取り組んでおり、C++ のバックグラウンドを持っています。Scalaのコーディング方法を学ぶのに役立つように、一緒にハッキングしているタスク追跡アプリの小さなクラスを作成しようとしています。
これは単純なはずですが、何らかの理由で私を逃れています:
Task(ID, Description)、Task(ID)、Task(Description) の 3 つのコンストラクタを提供しようとしています。後者の 2 つのケースでは、値の 1 つが呼び出し元によって提供されない場合、値を定数値に初期化したいと考えています。そして、単体テストの目的で、クラスの外でこれをチェックできるようにしたいと考えています。したがって、2 つの public val を配置することで、クラスの外部からチェックして、自分の状態が期待どおりであることを確認できると考えました。
ただし、何らかの理由でこのコードはコンパイルされません。次のエラーが表示されます。
と
それで、私は何が欠けていますか?私は「Scala でのプログラミング」に取り組んでいるので、この質問に対する簡単な答えがあれば、ページ番号を教えてください。読んでも構いませんが、60 ページと 62 ページのコードを見ると、このコードが失敗する理由がわかりません。
これらがコンストラクターメソッドであり、コンストラクターの最後まで2つの値が初期化されない可能性があるという事実と関係があると思います。その場合、私が探している効果を得る方法はありますか?
java - Scala ファイルからの jar ファイルの作成
私は Scala を初めて使用し、Java を知りません。単純な Scala ファイルから jar ファイルを作成したいと考えています。だから私は HelloWorld.scala を持っているので、HelloWorld.jar を生成します。
マニフェスト.mf:
私が実行するコンソールで:
scala - Scalaの抽象型/型パラメーター
私は次のようなことをする必要があるScalaコードを書き込もうとしています:
そしてそれは失敗しています。私は明らかにScalaジェネリックパラメーターについて何かを理解していません。明らかに、誤解は、C ++では、テンプレートは基本的に文字列置換のように機能するため、渡されるクラスにデフォルトのコンストラクターがある限り、新しいType()が機能するということです。ただし、Scalaでは、型はさまざまな種類のオブジェクトです。