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

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

8
Javaコンパイル速度とScalaコンパイル速度
私はしばらくScalaでプログラミングをしていて、それが好きですが、プログラムのコンパイルにかかる時間に悩まされています。それは小さなことのように思えますが、Javaを使用すると、プログラムに小さな変更を加え、netbeansの実行ボタンをクリックすると、BOOMが実行され、時間の経過とともにscalaでのコンパイルに多くの時間がかかるようです。多くの大規模なプロジェクトでは、コンパイルに時間がかかり、Javaを使用していたときに発生する必要がなかったため、スクリプト言語が非常に重要になると聞きました。 しかし、私が理解しているように、私はJavaから来ています。Javaは他のどのコンパイル言語よりも高速であり、Scalaに切り替えた理由のために高速です(非常に単純な言語です)。 だから私は尋ねたかったのですが、Scalaをより高速にコンパイルできますか?scalacはjavacと同じくらい高速になりますか?

14
HDFSの代わりにsc.textFileにローカルファイルをロードする方法
私は素晴らしいスパークのチュートリアルに従っています だから私は46m:00sにロードしようとしていますが、README.md私がやっていることに失敗するのはこれです: $ sudo docker run -i -t -h sandbox sequenceiq/spark:1.1.0 /etc/bootstrap.sh -bash bash-4.1# cd /usr/local/spark-1.1.0-bin-hadoop2.4 bash-4.1# ls README.md README.md bash-4.1# ./bin/spark-shell scala> val f = sc.textFile("README.md") 14/12/04 12:11:14 INFO storage.MemoryStore: ensureFreeSpace(164073) called with curMem=0, maxMem=278302556 14/12/04 12:11:14 INFO storage.MemoryStore: Block broadcast_0 stored as values in memory (estimated size 160.2 …

4
誰かがSBTの正しい使い方を説明できますか?
これでクローゼットから降りてきます!SBTがわかりません。そこで、私はそれを言いました、今私を助けてください。 すべての道はローマに通ず、それはSBTのための同じである:を始めるためにSBTありSBT、SBT Launcher、SBT-extras、など、その後含まれ、リポジトリを決定するためにさまざまな方法があります。「最善の」方法はありますか? 時々私は少し迷子になるので私は尋ねています。SBTのドキュメントは非常に詳細で完全ですが、いつbuild.sbtor project/build.propertiesまたはproject/Build.scalaor を使用するかわからないことに気づきましたproject/plugins.sbt。 そして、それが楽しくなり、そこにあるScala-IDEとSBT- それらを一緒に使用する正しい方法は何ですか?何が最初に来る、鶏または卵? 最も重要なことは、おそらく、プロジェクトに含める適切なリポジトリとバージョンをどのように見つけるかです。マシェットを引き出して、ハッキングを始めますか?すべてを含むプロジェクトと台所の流しが含まれているプロジェクトを見つけることがよくありますが、それに気づきました-少し迷っているのは私だけではありません。 簡単な例として、今、私は真新しいプロジェクトを始めています。私は、最新の機能を使用するSLICKとScala、これはおそらく、SBTの最新バージョンが必要になります。始めるのに正しい点は何ですか?なぜですか?どのファイルでそれを定義し、どのように見えるべきですか?私はこれを機能させることができることを知っていますが、私は本当にすべてがどこに行くべきかについての専門家の意見が欲しいです(なぜそれが行くべきなのかはボーナスになります)。 私はSBT1年以上ずっと小さなプロジェクトに使用しています。私はSBTそれを使ってSBT Extras(それが魔法のようにいくつかの頭痛を消したので)、しかし、なぜどちらを使うべきなのか分かりません。私は物事がどのように組み合わさっているか(SBTおよびリポジトリ)を理解していないことに少し不満を感じています。これを人間の言葉で説明できれば、次の人がこのようにやって来るのを大変な苦労から救うことができると思います。
100 scala  sbt 

2
なぜ `private val`と` private final val`が違うのですか?
私はそれを考えるために使用されるprivate valとprivate final val、私はScalaのリファレンスセクション4.1を見るまで、同じです。 定数値の定義は次の形式です。 final val x = e ここで、eは定数式です(§6.24)。最後の修飾子が存在する必要があり、型注釈を与えることはできません。定数値xへの参照自体は、定数式として扱われます。生成されたコードでは、定義の右側に置き換えられます。 そして私はテストを書きました: class PrivateVal { private val privateVal = 0 def testPrivateVal = privateVal private final val privateFinalVal = 1 def testPrivateFinalVal = privateFinalVal } javap -c 出力: Compiled from "PrivateVal.scala" public class PrivateVal { public int testPrivateVal(); Code: 0: …
100 scala  private  final 

6
Scalaでinstanceofチェックを行う方法(テスト)
ScalaTestをJavaプロジェクトに組み込もうとしています。すべてのJUnitテストをScalaTestsに置き換えます。ある時点で、Guiceのインジェクターが正しいタイプを注入しているかどうかを確認したいと思います。Javaでは、私はこのようなテストをしています: public class InjectorBehaviour { @Test public void shouldInjectCorrectTypes() { Injector injector = Guice.createInjector(new ModuleImpl()); House house = injector.getInstance(House.class); assertTrue(house.door() instanceof WoodenDoor); assertTrue(house.window() instanceof BambooWindow); assertTrue(house.roof() instanceof SlateRoof); } } しかし、私はScalaTestで同じことをすることに問題があります: class InjectorSpec extends Spec { describe("An injector") { it("should inject the correct types") { val injector = Guice.createInjector(new ModuleImpl) …
100 java  scala  junit  scalatest 


3
Scalaで複数のCasesクラスを一致させる
一部のケースクラスに対してマッチングを行っていますが、2つのケースを同じ方法で処理したいと考えています。このようなもの: abstract class Foo case class A extends Foo case class B(s:String) extends Foo case class C(s:String) extends Foo def matcher(l: Foo): String = { l match { case A() => "A" case B(sb) | C(sc) => "B" case _ => "default" } } しかし、これを行うとエラーが発生します: (fragment of test.scala):10: error: illegal …

5
JVMは末尾呼び出しの最適化を妨げますか?
私はこの質問でこの引用を見ました:Webサービスを構築するための優れた関数型言語は何ですか? 特にScalaは、自己再帰関数を除き、末尾呼び出しの除去をサポートしていません。これにより、実行できる構成の種類が制限されます(これは、JVMの基本的な制限です)。 これは本当ですか?もしそうなら、この基本的な制限を作成するのはJVMについて何ですか?



9
関数型プログラミング-不変性は高価ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 問題は2つの部分に分かれています。最初は概念的なものです。次に、同じ質問をScalaでより具体的に見ていきます。 プログラミング言語で不変のデータ構造のみを使用すると、実際には特定のアルゴリズム/ロジックの実装が本質的に計算コストが高くなりますか?これは、不変性が純粋に関数型言語の中心的な信条であることを示しています。これに影響を与える他の要因はありますか? より具体的な例を見てみましょう。クイックソートは、通常、メモリ内データ構造に対する可変操作を使用して教えられ、実装されます。可変バージョンに匹敵する計算およびストレージオーバーヘッドを備えたPURE機能的な方法で、そのようなことをどのように実装しますか。特にScalaで。以下にいくつかの大まかなベンチマークを含めました。 詳細: 私は命令型プログラミングのバックグラウンド(C ++、Java)から来ています。私は関数型プログラミング、特にScalaを調査しています。 純粋な関数型プログラミングの主要な原則のいくつか: 機能は一流の市民です。 関数には副作用がないため、オブジェクト/データ構造は不変です。 最近のJVMはオブジェクト作成に関して非常に効率的であり、ガベージコレクションは存続期間の短いオブジェクトに対して非常に安価ですが、オブジェクトの作成を最小限に抑える方が適切でしょう。少なくとも、同時実行性とロックが問題にならないシングルスレッドアプリケーションでは。Scalaはハイブリッドパラダイムであるため、必要に応じて、可変オブジェクトを使用して命令型コードを記述することを選択できます。しかし、オブジェクトを再利用し、割り当てを最小限にしようと何年も費やした人として。それさえ許さない思想の学校をよく理解して欲しい。 特定のケースとして、このチュートリアル 6のこのコードスニペットに少し驚いた。これには、Java版のQuicksortがあり、その後に、見栄えの良いScalaの実装が続きます。 実装をベンチマークする私の試みはここにあります。詳細なプロファイリングは行っていません。しかし、私の推測では、割り当てられるオブジェクトの数は線形(再帰呼び出しごとに1つ)であるため、Scalaバージョンの方が遅くなります。テールコールの最適化が機能する可能性はありますか?私が正しい場合、Scalaは自己再帰呼び出しの末尾呼び出しの最適化をサポートしています。だから、それはそれを助けるだけであるべきです。Scala 2.8を使用しています。 Javaバージョン public class QuickSortJ { public static void sort(int[] xs) { sort(xs, 0, xs.length -1 ); } static void sort(int[] xs, int l, int r) { if (r >= l) return; int pivot = …


10
Scalaでマップを反転させるエレガントな方法
現在、Scalaを学習しており、Mapを反転して値を逆にしてキーを検索する必要があります。私はこれを行う簡単な方法を探していましたが、思いついたのは次のものだけです。 (Map() ++ origMap.map(kvp=>(kvp._2->kvp._1))) 誰かがよりエレガントなアプローチを持っていますか?

3
実行せずにSBTでテストをコンパイルする方法
SBTを使用せずにテストをビルドする方法はありますか? 私自身の使用例は、scalacプラグインを使用してテストコードで静的分析を実行することです。別の考えられる使用例は、SBTに組み込まれたものとは別のランナーを使用して、テストコードの一部またはすべてを実行することです。 理想的には、あらゆるSBTプロジェクトに適用されるこの問題の解決策があるでしょう。たとえば、Mavenには、テストを実行せずにコンパイルするためだけに使用できるtest-compileコマンドがあります。SBTが同じものを持っていたら素晴らしいでしょう。 あまり理想的ではありませんが、それでも非常に役立つのは、プロジェクトのビルドファイルの変更を伴うソリューションです。
97 scala  sbt  build-tools 

5
Scalaのval-mutableとvar-immutableの比較
可変コレクションでvalを使用する場合と、不変コレクションでvarを使用する場合について、Scalaにガイドラインはありますか?それとも、不変のコレクションでvalを本当に目指すべきでしょうか? 両方の種類のコレクションがあるという事実は、私に多くの選択肢を与えてくれます、そして私はしばしばその選択をする方法を知りません。

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