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

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

11
SBTで「実行」アクションを使用してアプリケーションを実行するためのJVM最大ヒープサイズ「-Xmx」を指定する方法
私のアプリケーションは大規模なデータ配列処理を行い、JVMがデフォルトで提供するよりも多くのメモリを必要とします。Javaでは「-Xmx」オプションで指定されています。特定の「-Xmx」値を使用して「実行」アクションでアプリケーションを実行するようにSBTを設定するにはどうすればよいですか?
97 scala  sbt 


3
Scala定数の命名規則?
Scala定数の命名規則は何ですか?StackOverflowの提案を簡単に検索して大文字のCamelCase(下の1行目)を検索しましたが、再確認したいと思いました。 val ThisIsAConstant = 1.23 val THIS_IS_ANOTHER_CONSTANT = 1.55 val thisIsAThirdConstant = 1.94 推奨されるScalaスタイルはどれですか?



9
長いパラメーターリストを持つコンストラクターを使用せずに大きな不変オブジェクトを構築する
私はいくつかの大きな(3つ以上のフィールド)オブジェクトを持っていますが、それらは不変である必要があります。そのような場合に遭遇するたびに、長いパラメーターリストを使用してコンストラクターのabominationを作成する傾向があります。 違和感があり、使いづらく、読みやすさが低下します。 フィールドがリストのようなある種のコレクション型である場合はさらに悪いことです。simple addSibling(S s)はオブジェクトの作成を非常に簡単にしますが、オブジェクトを変更可能にします。 このような場合、皆さんは何を使用しますか? 私はScalaとJavaを使用していますが、言語がオブジェクト指向である限り、問題は言語にとらわれないものだと思います。 私が考えることができるソリューション: 「長いパラメーターリストによるコンストラクターの嫌悪感」 ビルダーパターン
96 java  oop  scala  immutability 

6
「abstract over」とはどういう意味ですか?
Scalaの文献では、「抽象化」というフレーズに出くわすことがよくありますが、意図がわかりません。 たとえば、Martin Oderskyは次のように書いています メソッド(または「関数」)をパラメーターとして渡すことも、それらを抽象化することもできます。タイプをパラメーターとして指定することも、それらを抽象化することもできます。 別の例として、「Deprecating the Observer Pattern」ペーパーでは、 イベントストリームが一流の値であることの結果は、それらを抽象化できることです。 モナドは「型コンストラクターを抽象化」しているのに対して、私は最初のジェネリックが「型を抽象化する」ことを読みました。また、Cake Patternペーパーにもこのようなフレーズが表示されます。多くのそのような例の1つを引用するには: 抽象型メンバーは、具象型のコンポーネントを抽象化する柔軟な方法を提供します。 関連するスタックオーバーフローの質問でさえ、この用語を使用します。 「パラメータ化された型を存在的に抽象化することはできません...」 では、「抽象化」とは実際にはどういう意味ですか?

8
ScalaでのNull / Nothing / Unitの使用法
今読んだところ:http : //oldfashionedsoftware.com/2008/08/20/a-post-about-nothing/ 私が理解している限り、Nullは特性であり、その唯一のインスタンスはnullです。 メソッドがNull引数を取る場合、それをNull参照またはnull直接渡すことができるだけで、それがnullであっても、他の参照は渡せませんnullString: String = null。 このNullトレイトを使用することがどのような場合に役立つか疑問に思います。私が実際にこれ以上の例を見ないNothingトレイトもあります。 どちらも結果を返さないので、NothingとUnitを戻り値の型として使用することの違いは本当にわかりません。たとえば、ログを実行するメソッドがある場合、どちらを使用するかを知る方法はありますか? Unit / Null / Nothingを戻り値の型以外に使用していますか?
95 scala 

1
タイプダイナミックはどのように機能し、どのように使用しますか?
DynamicScalaで動的型付けを行うことはどういうわけか可能だと聞きました。しかし、それがどのように見えるのか、それがどのように機能するのかは想像できません。 特性から継承できることがわかりました Dynamic class DynImpl extends Dynamic の APIは、 1はこのようにそれを使用できることを述べています: foo.method( "blah")~~> foo.applyDynamic( "method")( "blah") しかし、試してみるとうまくいきません。 scala> (new DynImpl).method("blah") <console>:17: error: value applyDynamic is not a member of DynImpl error after rewriting to new DynImpl().<applyDynamic: error>("method") possible cause: maybe a wrong Dynamic method signature? (new DynImpl).method("blah") ^ これは完全に論理的です。 ソースを、この特性は完全に空であることが判明したからです。applyDynamic定義されたメソッドはなく、自分で実装する方法を想像できません。 誰かがそれを機能させるために何をする必要があるかを私に示すことができますか?
95 scala 

18
Scalaコードがより単純に見える/行が少ないScalaおよびJavaコードのサンプル?
ScalaコードがJavaで書かれたコードよりもシンプルで簡潔であることを示す、ScalaおよびJavaコードのコードサンプルがいくつか必要です(私はそれらについても興味があります)(もちろん、両方のサンプルで同じ問題を解決できるはずです)。 「これはScalaの抽象ファクトリです。Javaではもっと面倒に見えます」のようなコメント付きのScalaサンプルしかない場合は、これも許容されます。 ありがとう! 私は受け入れられたすべての中で最も好きであり、この答え


5
?に類似した三項演算子:
私はこのような構成を避けようとしています: val result = this.getClass.getSimpleName if (result.endsWith("$")) result.init else result この例では、thenand elseブランチは単純ですが、複雑なブランチをイメージ化することができます。私は以下を構築しました: object TernaryOp { class Ternary[T](t: T) { def is[R](bte: BranchThenElse[T,R]) = if (bte.branch(t)) bte.then(t) else bte.elze(t) } class Branch[T](branch: T => Boolean) { def ?[R] (then: T => R) = new BranchThen(branch,then) } class BranchThen[T,R](val branch: T => …
94 scala 

3
Scalaでサブ配列を取得する正しい方法は何ですか?
私はscalaでサブアレイを取得しようとしていますが、それを行う適切な方法が何かについて少し混乱しています。私が最も欲しいのは、Pythonでそれを行う方法のようなものです: x = [3, 2, 1] x[0:2] しかし、私はあなたがこれを行うことができないとかなり確信しています。 それを行う最も明白な方法は、Java Arrays utilライブラリを使用することです。 import java.util.Arrays val start = Array(1, 2, 3) Arrays.copyOfRange(start, 0, 2) しかし、ScalaでJavaライブラリを使用することは、いつも少し汚れているように感じます。私がそれをするために見つけた最も「スケーラブルな」方法は def main(args: List[String]) { val start = Array(1, 2, 3) arrayCopy(start, 0, 2) } def arrayCopy[A](arr: Array[A], start: Int, end: Int)(implicit manifest: Manifest[A]): Array[A] = { val …



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