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

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

6
Scalaは要素がリストに存在するかどうかをチェックします
文字列がリストに存在するかどうかを確認し、それに応じてブール値を受け入れる関数を呼び出す必要があります。 ワンライナーでこれを達成することは可能ですか? 以下のコードは私が得ることができる最高のものです: val strings = List("a", "b", "c") val myString = "a" strings.find(x=>x == myString) match { case Some(_) => myFunction(true) case None => myFunction(false) } より少ないコーディングでこれを行うことは可能だと確信していますが、方法がわかりません!
86 string  list  scala  find 

7
Scalaメソッド宣言で等号を使用するのはいつですか?
等号付き: object HelloWorld { def main(args: Array[String]) = { println("Hello!") } } 等号なし: object HelloWorld { def main(args: Array[String]) { println("Hello!") } } 上記のプログラムは両方とも同じように実行されます。ブログ投稿「Scalaで気に入らないこと」で、等号がない場合、メソッドはUnit(Javaと同じようにvoid)返されるので、値を返すメソッドは等号を使用する必要があると読みました。ただし、値を返さないメソッドはどちらの方法でも記述できます。 値を返さないScalaメソッドで等号を使用するためのベストプラクティスは何ですか?
85 scala 

7
Scalaの継続とは何ですか?なぜそれらを使用するのですか?
Scalaでのプログラミングを終えたばかりで、Scala2.7と2.8の間の変更点を調べています。最も重要と思われるのは継続プラグインですが、それが何に役立つのか、どのように機能するのかわかりません。非同期I / Oに適していることは確認しましたが、その理由を見つけることができませんでした。このテーマに関するより人気のあるリソースのいくつかは次のとおりです。 区切られた継続とScala Scalaの後藤 2.8の味:続き 区切られた継続の説明(Scala) そして、Stack Overflowに関するこの質問: Scala2.8とScala2.7の最大の違いは何ですか? 残念ながら、これらのリファレンスはいずれも、継続の目的やシフト/リセット関数の機能を定義しようとはしておらず、そのようなリファレンスは見つかりませんでした。リンクされた記事の例がどのように機能するか(またはそれらが何をするか)を推測することができなかったので、私を助ける1つの方法は、それらのサンプルの1つを1行ずつ調べることです。3番目の記事からのこの単純なものでさえ: reset { ... shift { k: (Int=>Int) => // The continuation k will be the '_ + 1' below. k(7) } + 1 } // Result: 8 結果が8なのはなぜですか?それはおそらく私が始めるのに役立つでしょう。

1
Scalaで複数の値をパターンマッチングする方法は?
同じコードを使用して、リモートサービスからの複数の戻り値を処理したいとします。これをScalaで表現する方法がわかりません。 code match { case "1" => // Whatever case "2" => // Same whatever case "3" => // Ah, something different } Extractメソッドを使用してそれを呼び出すことができることはわかっていますが、呼び出しにはまだ繰り返しがあります。Rubyを使用している場合は、次のように記述します。 case code when "1", "2" # Whatever when "3" # Ah, something different end 例を簡略化したので、正規表現などでパターンマッチングを行いたくないことに注意してください。一致値は実際には複素数値です。


12
不変のリストから1つの要素を「削除」する慣用的なScalaの方法は何ですか?
私はリストを持っています、それは等しいと比較する要素を含むかもしれません。同様のリストが欲しいのですが、1つの要素が削除されています。したがって、(A、B、C、B、D)から、たとえば(A、C、B、D)を取得するために1つのBだけを「削除」できるようにしたいと思います。結果の要素の順序は重要ではありません。 私はScalaでLispに触発された方法で書かれた作業コードを持っています。これを行うためのより慣用的な方法はありますか? コンテキストは、標準カードの2つのデッキがプレイされているカードゲームであるため、重複するカードが存在する可能性がありますが、一度に1つずつプレイされます。 def removeOne(c: Card, left: List[Card], right: List[Card]): List[Card] = { if (Nil == right) { return left } if (c == right.head) { return left ::: right.tail } return removeOne(c, right.head :: left, right.tail) } def removeCard(c: Card, cards: List[Card]): List[Card] = { return removeOne(c, Nil, cards) …
84 list  scala 

8
割り当てられた値ではなく、ユニットに評価されるScala割り当ての動機は何ですか?
割り当てられた値ではなく、ユニットに評価されるScala割り当ての動機は何ですか? I / Oプログラミングの一般的なパターンは、次のようなことです。 while ((bytesRead = in.read(buffer)) != -1) { ... しかし、これはScalaでは不可能です... bytesRead = in.read(buffer) .. bytesReadの新しい値ではなく、Unitを返します。 関数型言語から除外するのは興味深いことのようです。なぜそうなったのかしら?

10
ケースクラスコンパニオンで適用をオーバーライドする方法
これが状況です。次のようなケースクラスを定義したいと思います。 case class A(val s: String) そして、クラスのインスタンスを作成するときに、次のように「s」の値が常に大文字になるようにオブジェクトを定義したいと思います。 object A { def apply(s: String) = new A(s.toUpperCase) } ただし、Scalaがapply(s:String)メソッドが2回定義されていると文句を言っているため、これは機能しません。ケースクラスの構文で自動的に定義されることは理解していますが、これを実現する別の方法はありませんか?パターンマッチングに使用したいので、ケースクラスを使い続けたいと思います。



3
ScalaトレイトとJava8インターフェースの違いと類似点は何ですか?
私はScalaに不慣れで、楽しみのために言語を学び始めましたが、それでも頭を悩ませようとしています。Scalaの特性についての私の理解は、いくつかのメソッドが実装を持つことができることを除いて、それらはJavaインターフェースに似ているということです。 Java 8は、実装を提供できるデフォルトのメソッドを持つことができるインターフェースを追加しています。 Java 8インターフェースとScalaトレイトの類似点と相違点は何ですか?
84 java  scala 

6
Scalaに戻る
私は初心者のscalaプログラマーであり、奇妙な振る舞いに出くわしました。 def balanceMain(elem: List[Char]): Boolean = { if (elem.isEmpty) if (count == 0) true; else false; if (elem.head == '(') balanceMain(elem.tail, open, count + 1);.... 上記の場合elem.isEmpty、基本的にはtrueを返したいと思いcount == 0ます。それ以外の場合は、falseを返します。 上記で、scalaにreturnステートメントを追加する必要がないことを読みました。だから私はreturn上記を省略しました。ただし、ブール値は返されません。returnステートメントをとして追加した場合return true。それは完全に機能します。なぜそうなのですか? また、scalaでreturnステートメントを使用することが悪い習慣と見なされるのはなぜですか
84 scala  return 

18
Option [T]クラスのポイントは何ですか?
Option[T]Scalaの授業のポイントがわかりません。つまり、私はNone以上の利点を見ることができませんnull。 たとえば、次のコードについて考えてみます。 object Main{ class Person(name: String, var age: int){ def display = println(name+" "+age) } def getPerson1: Person = { // returns a Person instance or null } def getPerson2: Option[Person] = { // returns either Some[Person] or None } def main(argv: Array[String]): Unit = { val p = …

3
Scalaでのカリー化の2つの方法。それぞれのユースケースは何ですか?
私が管理しているScalaスタイルガイドで複数のパラメータリストについて話し合っています。私はカリー化には2つの方法があることに気づきました、そして私はユースケースが何であるか疑問に思っています: def add(a:Int)(b:Int) = {a + b} // Works add(5)(6) // Doesn't compile val f = add(5) // Works val f = add(5)_ f(10) // yields 15 def add2(a:Int) = { b:Int => a + b } // Works add2(5)(6) // Also works val f = add2(5) f(10) // Yields …

1
状態遷移のシーケンスストリームとして記述されたプログラムをscalaz-streamに置き換えるにはどうすればよいですか?
以前は状態遷移のシーケンスとして作成したプログラムを再編成する方法を理解しようとしています。 私はいくつかのビジネスロジックを持っています: type In = Long type Count = Int type Out = Count type S = Map[Int, Count] val inputToIn: String => Option[In] = s => try Some(s.toLong) catch { case _ : Throwable => None } def transition(in: In): S => (S, Out) = s => { val …

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