タグ付けされた質問 「scala」

Scalaは、主にJava仮想マシンを対象とする汎用プログラミング言語です。一般的なプログラミングパターンを簡潔、エレガント、タイプセーフな方法で表現するように設計されており、命令型プログラミングと関数型プログラミングのスタイルを融合しています。その主な機能は次のとおりです。型推論を持つ高度な静的型システム。関数タイプ; パターンマッチング; 暗黙的なパラメータと変換。演算子のオーバーロード。Javaとの完全な相互運用性。並行性

6
Scalaのリソースフォルダーからファイルを読み取る方法は?
以下のようなフォルダ構造があります。 - main -- java -- resources -- scalaresources --- commandFiles そしてそのフォルダーには、私が読まなければならないファイルがあります。これがコードです: def readData(runtype: String, snmphost: String, comstring: String, specificType: String): Unit = { val realOrInvFile = "/commandFiles/snmpcmds." +runtype.trim // these files are under commandFiles folder, which I have to read. try { if (specificType.equalsIgnoreCase("Cisco")) { val specificDeviceFile: String = …

8
JVMがlocalhostのIPアドレスを解決するのに時間がかかる
macOS Sierraにアップグレードした後、「sbt test」(localhost名/ IPアドレスの検索を含む)のパフォーマンスに問題があるようです。以前のバージョンのOS Xでは、完了するまでに約40〜50秒かかりました。macOS Sierraの時間はそれよりはるかに長いです。私が行った最後の実行は約15分でした。コンパイル時間は、「El Capitan」とほぼ同じです。 私のチームからこの新しいmacOSを試すのは私だけなので、自分のMacでのみ発生しているのか、それとも一般的な問題なのかはわかりません。 私の同僚にもUbuntuで同様の問題があり、乱数生成がテストの速度低下に関連していた- サービスの応答時間が遅い:Java SecureRandom&/ dev / random 残念ながら、それは私にはうまくいきませんでした。もともと私はJDK 8u54でそれを試し、次にJDK 8u102にアップデートしようとしましたが、それも助けにはなりませんでした。 PS Macbook Pro Mid-2015 2.8GHz i7、16GB RAM、1TB SSDを実行しています。

3
Scala:配列に要素を追加する最良の方法は何ですか?
私がArray[Int]好きだと言う val array = Array( 1, 2, 3 ) 4次の例のように、配列に要素、たとえばvalueを追加したいと思います。 val array2 = array + 4 // will not compile もちろんSystem.arraycopy()自分で使用してこれを行うこともできますが、これにはScalaライブラリー関数が必要です。ポインタをありがとう! ノート: 次の行のように、要素の別の配列を追加できることは承知していますが、それはあまりにも回りすぎに見えます。 val array2b = array ++ Array( 4 ) // this works ListとArrayの長所と短所を認識しており、ここでは特にArrayの拡張に関心があるさまざまな理由があります。 編集1 :+演算子メソッドを指している答えをありがとう。これは私が探していたものです。残念ながら、これは、カスタムのappend()メソッドの実装よりもかなり遅く、arraycopy約2〜3倍遅くなります。の実装を見ると、SeqLike[]ビルダーが作成され、配列が追加され、ビルダーを介して追加が行われ、ビルダーがレンダリングされます。配列の適切な実装ではありません。2つの方法を比較する簡単なベンチマークを行い、10サイクルのうち最も速い時間を調べました。あるクラスの8要素の配列インスタンスに単一項目の追加を1,000万回繰り返すと、を使用する単純なメソッドでFoo3.1秒:+、1.7秒かかりappend()ます。System.arraycopy();Longの8要素の配列で1000万の単一項目の追加の繰り返しを行う:+と、単純なappend()方法では2.1秒、0.78秒かかります。これをカスタム実装のライブラリで修正できなかったのではないArrayでしょうか。 編集2 それが価値があるもののために、私はチケットを提出しました:https: //issues.scala-lang.org/browse/SI-5017
111 arrays  scala  append 

9
private [this]とprivate
Scalaでは、このような機能をオブジェクトプライベート変数と見なします。あまりリッチでないJavaのバックグラウンドから、必要に応じてすべてを閉じ(プライベートにし)、開く(アクセサを提供する)ことを学びました。Scalaはさらに厳密なアクセス修飾子を導入しています。デフォルトで常に使用する必要がありますか?または、同じクラスのオブジェクトでもフィールド値の変更を明示的に制限する必要がある一部の特定の場合にのみ使用する必要がありますか?つまり、どのように選択すればよいですか class Dummy { private var name = "default name" } class Dummy { private[this] var name = "default name" } 2番目の方がより厳格で好きですが、常に使用するべきですか、それとも強い理由がある場合にのみ使用するべきですか? 編集:ここに表示されて private[this]いるように、一部のサブケースがあり、代わりにthis「パッケージ、クラス、またはシングルトンオブジェクト」などの他の修飾子を使用できます。だから私はそれをいくつかの特別な場合のために残しておきます。
111 scala 



3
ScalaでInputStreamを文字列に変換する慣用的な方法
InputStreamをStringに変換するためにJavaで使用した便利な関数があります。以下はScalaへの直接の翻訳です: def inputStreamToString(is: InputStream) = { val rd: BufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8")) val builder = new StringBuilder() try { var line = rd.readLine while (line != null) { builder.append(line + "\n") line = rd.readLine } } finally { rd.close } builder.toString } これをscalaで行う慣用的な方法はありますか?

4
JodaTimeで特定の月の最終日を取得する方法は?
org.joda.time.LocalDate月の最初の日付(として)と最後の日付を取得する必要があります。最初のものを取得するのは簡単ですが、最後のものを取得するにはいくつかのロジックが必要と思われます。JodaTimeに既に組み込まれているメカニズムはありますか、それとも自分で実装する必要がありますか?
110 java  scala  jodatime 

5
Scalaアクター:受信vs反応
まず、Javaの経験は豊富ですが、関数型言語に興味を持つようになったのはつい最近のことです。最近、Scalaを検討し始めました。Scalaはとてもいい言語のようです。 ただし、「Scalaでのプログラミング」でScalaのActorフレームワークについて読んでいますが、理解できないことが1つあります。30.4章では、react代わりにreceiveを使用するとスレッドを再利用できるようになると述べています。これは、JVMではスレッドが高価であるため、パフォーマンスに優れています。 これは、のreact代わりに呼び出すことを覚えている限り、receive好きなだけアクターを開始できることを意味しますか?Scalaを発見する前は、Erlangで遊んでおり、Programming Erlangの作者は200,000を超えるプロセスをスポーンさせずに生み出したことを誇りに思っています。Javaスレッドでそれを行うのは嫌です。Erlang(およびJava)と比較して、Scalaではどのような制限を見ていますか? また、このスレッドの再利用はScalaでどのように機能しますか?簡単にするために、スレッドが1つしかないと仮定します。私が開始するすべてのアクターはこのスレッドで順次実行されますか、それとも何らかのタスク切り替えが行われますか?たとえば、メッセージを互いにピンポンする2つのアクターを開始した場合、それらが同じスレッドで開始された場合、デッドロックの危険がありますか? Scalaのプログラミングによると、使用するアクターの作成はを使用する場合reactよりも困難ですreceive。react戻らないので、これはもっともらしく聞こえます。ただし、この本では、をreact使用してループ内に配置する方法を示していますActor.loop。結果として、 loop { react { ... } } 私にとって、これは while (true) { receive { ... } } これは本の前半で使用されています。それでも、本は「実際には、プログラムには少なくとも数個が必要になる」と述べていreceiveます。だから私はここで何が欠けていますか?返す以外に、receiveそれreactができないことは何ですか?そして、なぜ私は気にしますか? 最後に、私が理解していないことの核心にたどり着きます。この本ではreact、スレッドを再利用するためにコールスタックを破棄することがどのように可能になるかについて、本が繰り返し言及しています。それはどのように機能しますか?呼び出しスタックを破棄する必要があるのはなぜですか?そして、関数が例外(react)をスローすることによって終了したときにコールスタックが破棄されるのはなぜreceiveですか? 『Scalaでのプログラミング』は、ここでの主要な問題のいくつかにつまづいているように思えますが、それは残念です。

5
sbtとGradleの比較[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 この質問を改善する 私はScalaに飛び込んでいて、sbtに気づきました。私はjava / groovyプロジェクトでGradleに非常に満足しており、Gradle用のscalaプラグインがあることを知っています。 ScalaプロジェクトでGradleよりもsbtを支持する良い理由は何でしょうか?
110 scala  sbt  gradle 

6
単純なケースクラスの順序を定義する簡単な慣用的な方法
単純なscalaケースクラスのインスタンスのリストがあり、を使用して予測可能な辞書式順序でそれらを印刷したいのですlist.sortedが、「...に対して暗黙の順序付けが定義されていません」というメッセージが表示されます。 ケースクラスの辞書式順序を提供する暗黙的なものはありますか? 辞書式の順序付けをケースクラスにミックスインする簡単な慣用的な方法はありますか? scala> case class A(tag:String, load:Int) scala> val l = List(A("words",50),A("article",2),A("lines",7)) scala> l.sorted.foreach(println) <console>:11: error: No implicit Ordering defined for A. l.sorted.foreach(println) ^ 私は「ハック」に満足していません: scala> l.map(_.toString).sorted.foreach(println) A(article,2) A(lines,7) A(words,50)

2
Scalaのプライベートおよび保護されたコンストラクター
私は、Scalaに明示的なプライマリコンストラクターがないことの影響について興味を持っていました。クラス本体のコンテンツだけです。 特に、プライベートまたは保護されたコンストラクターパターン、つまり、コンパニオンオブジェクトまたは別のクラスまたはオブジェクトのメソッドを介して構築を制御することは、明確な実装を持たないのではないかと思います。 私が間違っている?もしそうなら、それはどのように行われますか?
109 scala 

4
scalaが依存型を明示的にサポートしない理由は何ですか?
パスに依存するタイプがあり、EpigramやAgdaなどの言語のほぼすべての機能をScalaで表現することは可能だと思いますが、Scalaが他の領域で非常にうまく機能するように、Scalaがこれをより明示的にサポートしない理由を知りたいと思います(たとえば、DSL)?「それは必要ない」のように私が欠けているものはありますか?


3
build.sbtとbuild.scalaの違いは何ですか?
私はScalaを学び始め、ほとんどすべてのチュートリアルでbuild.sbtプロジェクト設定を記述したファイルを見つけました。しかし、今giter8はテンプレートからプロジェクトをインストールして作成しました。そして、テンプレートの欠落したbuild.sbtファイルからプロジェクトを生成しましたがbuild.scala、同じ目的で使用されているように見えますが、より柔軟性があります。 だから、何の違いであるbuild.sbtとはbuild.scala? どちらがより好まれ、なぜですか?
107 scala  sbt 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.