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

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

12
Scalaのインデックスを使用した効率的な反復
Scalaにはforインデックス付きの古いJavaスタイルのループがないため、 // does not work val xs = Array("first", "second", "third") for (i=0; i<xs.length; i++) { println("String #" + i + " is " + xs(i)) } を使用せずに、どうすれば効率的に反復できvarますか? あなたはこれを行うことができます val xs = Array("first", "second", "third") val indexed = xs zipWithIndex for (x <- indexed) println("String #" + x._2 + " …
83 scala  iteration 

2
マルチプロジェクトでのSBTテストの依存関係:依存プロジェクトでテストコードを利用できるようにする
一部のプロジェクトが相互に依存しているSBTマルチプロジェクトがあります。このような: lazy val coreProject: Project = Project( id = "core-project", base = file("./core-project"), // other stuff )) lazy val extensions: Project = Project( id = "extensions", base = file("./extensions"), dependencies = Seq(coreProject) ) これで、test-folderの「core」プロジェクトにいくつかのテストコードがあります。モックやテストユーティリティのようなものもあります。次に、これらのテストユーティリティを拡張機能のテストで使用したいと思います。依存関係を宣言したので、本番コードの場合、これは機能します。ただし、依存関係はテストには当てはまらないようです。テストを実行すると、不足しているクラスのコンパイルエラーが発生します。これらのクラスは、コアプロジェクトのテストコードからのものです。 依存関係にテストスコープのテストコードも含める必要があることをsbtに伝えるにはどうすればよいですか?'exension'プロジェクトのテストコードでモックを再利用できるようにするには?
83 scala  testing  sbt 

6
Scala:文字列からブール値へのエレガントな変換
Javaでは次のように書くことができます Boolean.valueOf(myString)。ただし、Scalaでは、この機能が不足java.lang.Booleanしscala.Booleanているために隠されています。ブール値の元のJavaバージョンを使用するように切り替えるのは簡単ですが、それは正しくないようです。 ではtrue、文字列から抽出するためのScalaの1行の標準的なソリューションは何ですか?
83 scala 

8
-Dパラメーターまたは環境変数をSparkジョブに渡す方法は?
dev / prod環境でSparkジョブのTypesafe構成を変更したい。これを達成する最も簡単な方法は-Dconfig.resource=ENVNAME、仕事に転職することだと私には思えます。その後、Typesafe構成ライブラリが私のために仕事をします。 そのオプションを直接ジョブに渡す方法はありますか?または、実行時にジョブ構成を変更するためのより良い方法がありますか? 編集: spark-submitコマンドに--conf "spark.executor.extraJavaOptions=-Dconfig.resource=dev"オプションを追加しても何も起こりません。 spark-submitコマンドError: Unrecognized option '-Dconfig.resource=dev'.に渡し-Dconfig.resource=devたときに取得しました。

8
パフォーマンスとJavaの相互運用性について:ClojureとScala
私はすでにClojure対Scalaのさまざまな説明を読みましたが、どちらにも場所があることに気づきました。ClojureとScalaの両方を比較する場合、完全な説明が得られていない考慮事項がいくつかあります。 1.)2つの言語のどちらが一般的に速いですか?これは言語機能ごとに異なることは理解していますが、パフォーマンスの一般的な評価が役立つでしょう。例:Python辞書は本当に高速であることを私は知っています。しかし、全体として、Javaよりもはるかに遅い言語です。Clojureを使用して、この問題に遭遇したくありません。 2.)Javaとの相互運用性はどうですか?私がこれまで読んだことは、Scalaにはネイティブコレクションタイプがあるため、大規模なJavaコードベースと統合するのが少し不器用であるのに対し、ClojureはJavaクラスと相互運用するための単純な反復可能/反復子中心の方法に従います。これについてこれ以上の考え/詳細はありますか? 最終的に、それがclojureとscalaの間の十分に近い引き分けである場合、私は両方を試すかもしれません。Clojureの1つは、言語が非常に単純に見えることです。しかし、繰り返しになりますが、Scalaには非常に柔軟な型システムがあります。しかし、私はScalaが高速であることを知っています(複数の個人アカウントに基づく)。したがって、Clojureの速度が大幅に遅い場合は、後でではなく早く知りたいと思います。

2
SBTとIntelliJIDEAで複数の相互依存モジュールを管理する方法は?
私はそれらの間に依存関係があるいくつかのモジュールを開発していて、それらすべてを1つのIDEAプロジェクトで一緒に作業したいと思っています。私はsbt-ideaを使用して、sbtビルド定義からIDEAプロジェクトを生成しています。これは、個々のプロジェクトに最適です。ただし、複数モジュールの場合、これまでに試したことはうまくいきません。 sbt-ideaを使用して、モジュールごとに個別にIDEA.imlファイルを生成します。次に、マスターIDEAプロジェクトを最初から作成し、それらのモジュールをそれに追加します。これにより、モジュールソースはすべて同じウィンドウで編集可能になりますが、それらの間の依存関係は追跡されません(したがって、fooプロジェクト内のソースからbar内のソースに移動しようとすると、ローカルソースではなく、インポートされたライブラリバージョンのbarに移動します)。 親プロジェクトのBuild.scalaに次のようなものが含まれているsbtマルチプロジェクトビルド(別名サブプロジェクト)を使用します。 lazy val foo = Project(id = "foo", base = file("foo")) lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo) sbt-ideaが、追跡されたサブプロジェクト間の依存関係を持つマスターIDEAプロジェクトを生成するという点で、これはほぼ機能します。ただし、2つの注意点があります。 サブプロジェクトがマスタープロジェクトのサブディレクトリに存在する必要がある(つまり、file("../foo")許可されていない)ことは、sbtの制限のようです。これは本当に私が望んでいることではありませんが(「utils」や「commons」パッケージなどのモジュールが2つの異なるマスタープロジェクトで使用されている場合はどうなりますか?)、私はそれを使用できます。 私のサブプロジェクトの1つには、独自のサブプロジェクトがあります。sbt自体がこれらのネストされたプロジェクトを正しく処理するかどうかはわかりませんが、いずれの場合もsbt-ideaによって無視されます。明らかに、ネストされたサブプロジェクトをマスタープロジェクトに再帰的に含める必要があります。 要約すると、すでにサブプロジェクトが含まれている可能性のあるモジュールを、編集しやすいように依存関係を追跡した1つの大きなIDEAプロジェクトに収集したいと思います。どうすればいいですか?ありがとう!

2
Scalaの::と:::の違いは何ですか
val list1 = List(1,2) val list2 = List(3,4) その後 list1::list2 returns: List[Any] = List(List(1, 2), 3, 4) list1:::list2 returns: List[Int] = List(1, 2, 3, 4) 私は本がそれを使用::すると結果も生じると書いているのを見ましたList[Int] = List(1, 2, 3, 4)。私のScalaバージョンは2.9です。
82 scala 

5
Scalaカリー化と部分的に適用された機能
私はここについてのいくつかの質問があることを認識するものカリー化と部分的に適用される機能がありますが、私は彼らがどのように異なるかについて尋ねています。簡単な例として、偶数を見つけるためのカリー化された関数を次に示します。 def filter(xs: List[Int], p: Int => Boolean): List[Int] = if (xs.isEmpty) xs else if (p(xs.head)) xs.head :: filter(xs.tail, p) else filter(xs.tail, p) def modN(n: Int)(x: Int) = ((x % n) == 0) したがって、これを使用するには、次のように書くことができます。 val nums = List(1,2,3,4,5,6,7,8) println(filter(nums, modN(2)) これは次を返します:List(2,4,6,8)。しかし、私はこの方法で同じことができることを発見しました: def modN(n: Int, x: Int) = ((x % n) …

5
StringScalaの末尾から文字を削除する
Scalaで文字列の最後から最後の文字を削除する最も簡単な方法は何ですか? RubysStringクラスにはchopのような非常に便利なメソッドがいくつかあることがわかりました。Scalaで "oddoneoutz" .headOptionを使用したはずですが、減価償却されています。私は過度に複雑になりたくありません: string.slice(0, string.length - 1) 誰かが私にこの一般的な何かのためにチョップのような素敵な簡単な方法があると教えてください。
82 string  scala 

3
HashPartitionerはどのように機能しますか?
のドキュメントを読みましたHashPartitioner。残念ながら、API呼び出し以外は何も説明されていませんでした。私はHashPartitioner、キーのハッシュに基づいて分散セットを分割することを前提としています。たとえば、私のデータが次のような場合 (1,1), (1,2), (1,3), (2,1), (2,2), (2,3) したがって、パーティショナーはこれを異なるパーティションに配置し、同じキーが同じパーティションに分類されます。しかし、コンストラクター引数の意味がわかりません new HashPartitoner(numPartitions) //What does numPartitions do? 上記のデータセットの場合、私が行った場合、結果はどのように異なりますか new HashPartitoner(1) new HashPartitoner(2) new HashPartitoner(10) では、HashPartitioner実際にはどのように機能しますか?


1
JMSではなくScalaのアクターを支持する設計上の決定は何ですか?
JMSの代わりにScalaアクターを使用する場合の違いは何ですか? たとえば、パフォーマンスとスケーラビリティの観点から、ScalaアクターモデルはJMSと比較して何を追加しますか?どの場合、JMSではなくアクターを使用する方が理にかなっていますか?つまり、JMSがカバーできないアクターが対処する問題は何ですか?
81 java  scala  jms  actor 


3
Scalaマップを繰り返す方法は?
私はscalaマップを持っています: attrs: Map[String , String] 次のようにマップを反復処理しようとすると、 attrs.foreach { key, value => } 上記は機能しません。各反復で、キーと値を知る必要があります。Scalaシンタックスシュガーを使用してScalaマップを反復処理する適切な方法は何ですか?
81 scala 

4
Scalaの複数のパラメーターリストとリストごとの複数のパラメーターの違いは何ですか?
Scalaでは、このような関数を書くことができます(カレー?) def curriedFunc(arg1: Int) (arg2: String) = { ... } curriedFunc2つのパラメーターリストを持つ上記の関数定義と、1つのパラメーターリストに複数のパラメーターを持つ関数の違いは何ですか。 def curriedFunc(arg1: Int, arg2: String) = { ... } 数学的な観点から、これはある(curriedFunc(x))(y)とcurriedFunc(x,y)私は書くことができますdef sum(x) (y) = x + yと同じになりますdef sum2(x, y) = x + y 私はただ1つの違いを知っています-これは部分的に適用された関数です。しかし、どちらの方法も私にとっては同等です。 他に違いはありますか?

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