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

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

1
Scalaアンダースコア-エラー:拡張関数のパラメータータイプがありません
これについてはかなりの数の質問があることは知っていますが、うまくいくはずだと思った簡単な例を作成しましたが、それでもうまくいかず、理由がわかりません val myStrings = new Array[String](3) // do some string initialization // this works myStrings.foreach(println(_)) // ERROR: missing parameter type for expanded function myStrings.foreach(println(_.toString)) 2番目のステートメントがコンパイルされない理由を誰かが説明できますか?

4
Scalaケースクラスの継承
Squerylをベースにしたアプリケーションがあります。モデルをケースクラスとして定義します。これは主に、コピーメソッドがあると便利だからです。 厳密に関連する2つのモデルがあります。フィールドは同じで、多くの操作が共通しており、同じDBテーブルに格納されます。ただし、2つのケースのいずれかでのみ意味がある、または両方のケースで意味があるが異なる動作がいくつかあります。 これまで、モデルのタイプを区別するフラグを持つ単一のケースクラスのみを使用してきました。モデルのタイプに基づいて異なるすべてのメソッドは、ifで始まります。これは煩わしく、タイプセーフではありません。 私がやりたいのは、祖先のケースクラスの共通の動作とフィールドを因数分解し、2つの実際のモデルにそれを継承させることです。しかし、私が理解している限り、Scalaではケースクラスからの継承は嫌われており、サブクラス自体がケースクラス(私の場合ではない)である場合でも禁止されています。 ケースクラスから継承する際に知っておくべき問題と落とし穴は何ですか?私の場合、そうすることは理にかなっていますか?

11
フォールドの早い段階で中止する
フォールドを早期に終了する最良の方法は何ですか?簡単な例として、の数を合計したいとしますが、Iterable予期しないもの(奇数など)に遭遇した場合は、終了したい場合があります。これは最初の概算です def sumEvenNumbers(nums: Iterable[Int]): Option[Int] = { nums.foldLeft (Some(0): Option[Int]) { case (Some(s), n) if n % 2 == 0 => Some(s + n) case _ => None } } ただし、このソリューションはかなり醜く(.foreachとreturnを実行した場合のように、はるかにクリーンで明確になります)、最悪の場合、偶数以外の数値に遭遇した場合でも、反復可能全体をトラバースします。 。 では、このようなフォールドを作成するための最良の方法は何でしょうか。これを再帰的に記述する必要がありますか、それとももっと受け入れられる方法がありますか?

13
Scalaリストをタプルに変換しますか?
(たとえば)3つの要素を持つリストをサイズ3のタプルに変換するにはどうすればよいですか? たとえば、私が持っていてval x = List(1, 2, 3)、これをに変換したいとし(1, 2, 3)ます。これどうやってするの?
88 list  scala  tuples 

3
ScalaTestでカスタム失敗メッセージを表示するにはどうすればよいですか?
ScalaTestでカスタム失敗メッセージを表示する方法を知っている人はいますか? 例えば: NumberOfElements() should equal (5) 失敗すると、次のメッセージが表示されます。 10は5と等しくありませんでした しかし、私は次のようなより説明的なメッセージが必要です: NumberOfElementsは5である必要があります。

10
JavaコレクションをScalaコレクションに変換する
Stack Overflowの質問Scalaの新しいHashSet(Collection)に相当する質問に関連して、Javaコレクション(java.util.Listたとえば)をScalaコレクションに変換するにはどうすればよいListですか? 私は実際にはJava API呼び出しをSpring に変換しようとしてSimpleJdbcTemplateいます。これはを返すのでjava.util.List<T>、Scala不変に変換されますHashSet。だから例えば: val l: java.util.List[String] = javaApi.query( ... ) val s: HashSet[String] = //make a set from l これは動作するようです。批評は大歓迎です! import scala.collection.immutable.Set import scala.collection.jcl.Buffer val s: scala.collection.Set[String] = Set(Buffer(javaApi.query( ... ) ) : _ *)

5
for-内包表記からflatMap / Mapへの変換と混同される
MapとFlatMapを理解していないようです。私が理解していないのは、for-incomhensionがmapとflatMapへのネストされた呼び出しのシーケンスであるということです。次の例は、Scalaの関数型プログラミングの例です def bothMatch(pat:String,pat2:String,s:String):Option[Boolean] = for { f <- mkMatcher(pat) g <- mkMatcher(pat2) } yield f(s) && g(s) に翻訳する def bothMatch(pat:String,pat2:String,s:String):Option[Boolean] = mkMatcher(pat) flatMap (f => mkMatcher(pat2) map (g => f(s) && g(s))) mkMatcherメソッドは次のように定義されます。 def mkMatcher(pat:String):Option[String => Boolean] = pattern(pat) map (p => (s:String) => p.matcher(s).matches) そして、パターンメソッドは次のとおりです: import java.util.regex._ def pattern(s:String):Option[Pattern] …

5
上位の型はいつ役立つのですか?
私はしばらくF#で開発を行っており、気に入っています。しかし、私がF#に存在しないことを知っている流行語の1つは、種類の高い型です。種類の多い資料を読んだことがあり、その定義を理解していると思います。それらがなぜ有用なのか、私にはわかりません。誰かが、F#での回避策を必要とする、ScalaまたはHaskellで種類の高いものが簡単にできる例をいくつか提供できますか?また、これらの例では、種類の高い型がない場合(またはF#で逆の場合)の回避策は何ですか?多分私はそれを回避するのに慣れているので、その機能がないことに気付かないでしょう。 (私は思います)私はmyList |> List.map f、myList |> Seq.map f |> Seq.toListより高い種類の型の代わりに、単純に書くmyList |> map fことができ、それがを返すと思いますList。(それが正しいと仮定して)それは素晴らしいですが、ちょっとささいなことですか?(そして、関数のオーバーロードを許可するだけでそれを行うことはできませんでしたか?)私は通常、Seqとにかく変換し、その後、必要なものに変換できます。繰り返しますが、多分私はそれを回避するのに慣れすぎています。しかし、より種類の高いタイプがキーストロークまたはタイプセーフのいずれかで本当にあなたを救う例はありますか?

3
Scalaに適した数学/統計ライブラリはありますか?[閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 2年前休業。 この質問を改善する 数学と統計のためのscala用の優れたオープンソースライブラリを探しています。うまくいけば、Apache MathやColtのようなものですが、Scalaで実装されています。 誰かが私を正しい方向に向けることができますか?
87 scala  math  statistics 

2
依存性注入のためのリーダーモナド:複数の依存性、ネストされた呼び出し
Scalaでの依存性注入について尋ねられたとき、かなり多くの回答が、Scalazからのものか、または単に独自のものをローリングするかのいずれかで、ReaderMonadを使用することを示しています。アプローチの基本を説明する非常に明確な記事がいくつかありますが(たとえば、Runarの講演、Jasonのブログ)、より完全な例を見つけることができず、そのアプローチの利点を他の人よりも理解できていません。従来の「手動」DI(私が書いたガイドを参照)。おそらく私はいくつかの重要な点を見逃しているので、質問です。 例として、次のクラスがあると想像してみましょう。 trait Datastore { def runQuery(query: String): List[String] } trait EmailServer { def sendEmail(to: String, content: String): Unit } class FindUsers(datastore: Datastore) { def inactive(): Unit = () } class UserReminder(findUser: FindUsers, emailServer: EmailServer) { def emailInactive(): Unit = () } class CustomerRelations(userReminder: UserReminder) { def retainUsers(): Unit = …



3
param:_ *はScalaで何を意味しますか?
Scala(2.9.1)を初めて使用するので、を持っていて、List[Event]それをにコピーしたいのですQueue[Event]が、次の構文ではQueue[List[Event]]代わりに次のようになります。 val eventQueue = Queue(events) 何らかの理由で、次のように機能します。 val eventQueue = Queue(events : _*) しかし、私はそれが何をするのか、そしてなぜそれが機能するのかを理解したいと思いますか?私はすでにQueue.apply関数のシグネチャを見ました: def apply[A](elems: A*) そして、最初の試みがうまくいかない理由は理解していますが、2番目の試みの意味は何ですか?何です:と、_*このケースでは、なぜしないapply機能は、ちょうど取りますかIterable[A]?

10
ApacheSparkのリストとしてデータフレームの列値を抽出します
データフレームの文字列列をリストに変換したい。DataframeAPIからわかるのはRDDなので、まずRDDに変換してtoArrayから、RDDに関数を適用してみました。この場合、長さとSQLは問題なく機能します。ただし、RDDから取得した結果には、このようなすべての要素を角かっこで囲んでいます[A00001]。列をリストに変換する適切な方法や、角かっこを削除する方法があるかどうか疑問に思いました。 任意の提案をいただければ幸いです。ありがとうございました!

8
いくつかの先物を待つ方法は?
いくつかの先物があり、それらのいずれかが失敗するか、すべてが成功するまで待つ必要があるとします。 たとえば:3つの先物がありましょうf1、f2、f3。 場合はf1成功し、f2失敗した私は待たないf3(と返す失敗をクライアントに)。 実行中にf2失敗しf1、f3まだ実行中の場合、私はそれらを待ちません(そして失敗を返します) f1成功してからf2成功した場合、私は待ち続けf3ます。 どのように実装しますか?

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