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

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




12
Scalaのdoubleと精度
Doubleを切り捨てたり丸めたりできる関数はありますか?私のコードのある時点で、私は次のような数を望みます:1.23456789丸められる1.23

12
Scalaでメソッドをプロファイルする方法は?
Scalaメソッド呼び出しをプロファイリングする標準的な方法は何ですか? 必要なのは、タイマーを開始および停止するために使用できるメソッドのフックです。 Javaでは、アスペクトプログラミング(aspectJ)を使用して、プロファイルするメソッドを定義し、バイトコードを注入して同じことを実現します。 Scalaで、プロセスの静的型付けを失うことなく、関数の前後に呼び出される一連の関数を定義できるより自然な方法はありますか?

10
Scalaリストを作成する好ましい方法
Scalaで不変のリストを作成する方法はいくつかあります(以下の不自然なサンプルコードを参照)。変更可能なListBufferを使用したり、varリストを作成して変更したり、末尾再帰メソッドを使用したり、おそらく私が知らないその他の方法を使用したりできます。 私は本能的にListBufferを使用していますが、使用する正当な理由はありません。リストを作成するための推奨される方法または慣用的な方法はありますか、または別の方法よりもある方法に最適な状況がありますか? import scala.collection.mutable.ListBuffer // THESE are all the same as: 0 to 3 toList. def listTestA() ={ var list:List[Int] = Nil for(i <- 0 to 3) list = list ::: List(i) list } def listTestB() ={ val list = new ListBuffer[Int]() for (i <- 0 to 3) list += …
117 scala 

6
Scala:失敗した先物を無視してList [Future]からFuture [List]へ
任意の長さのFutureのリストをFuture of Listに変換する方法を探しています。私はPlayframeworkを使用しているので、結局のところ、私が本当に欲しいのはですが、Future[Result]物事をより簡単にするために、ただ言っておきましょう。Future[List[Int]]これを行う通常の方法は、使用することですFuture.sequence(...)が、ひねりがあります...約10〜20の先物で、これらの先物のうちの1つが失敗することは珍しくありません(彼らは外部のWebサービス要求を行っています)。それらの1つが失敗した場合にすべてを再試行する代わりに、成功したものに到達してそれらを返すことができるようにしたいと思います。 たとえば、次の操作は機能しません import scala.concurrent._ import scala.concurrent.ExecutionContext.Implicits.global import scala.util.Success import scala.util.Failure val listOfFutures = Future.successful(1) :: Future.failed(new Exception("Failure")) :: Future.successful(3) :: Nil val futureOfList = Future.sequence(listOfFutures) futureOfList onComplete { case Success(x) => println("Success!!! " + x) case Failure(ex) => println("Failed !!! " + ex) } scala> Failed !!! java.lang.Exception: …
116 scala  future 

6
Scalaでの配列の初期化
私はScalaを使い始めたばかりですが、今日それを学び始めました。Scalaで配列を初期化する方法を知りたいのですが。 Javaコードの例 String[] arr = { "Hello", "World" }; 上記のScalaのコードに相当するものは何ですか?


7
Scalaが下向きまたはforループが減少しますか?
Scalaでは、イテレーターを使用して、for次のような昇順でループを実行することがよくあります。 for(i <- 1 to 10){ code } それを10から1にするにはどうしますか?10 to 1(通常の範囲の数学のように)空のイテレータを与えると思いますか? イテレータでreverseを呼び出すことによってそれを解決するScalaスクリプトを作成しましたが、私の意見では良くありません。 def nBeers(n:Int) = n match { case 0 => ("No more bottles of beer on the wall, no more bottles of beer." + "\nGo to the store and buy some more, " + "99 bottles of beer on …

9
ScalaでのJavaコレクションの反復
Apache POI API を使用するいくつかのScalaコードを書いています。java.util.IteratorSheetクラスから取得したに含まれる行を反復処理したいと思います。イテレータをfor eachスタイルループで使用したいので、ネイティブのScalaコレクションに変換しようとしていますが、うまくいきません。 Scalaのラッパークラス/特性を確認しましたが、それらを正しく使用する方法がわかりません。while(hasNext()) getNext()ループの詳細スタイルを使用せずにScalaでJavaコレクションを反復するにはどうすればよいですか? 正しい答えに基づいて私が書いたコードは次のとおりです。 class IteratorWrapper[A](iter:java.util.Iterator[A]) { def foreach(f: A => Unit): Unit = { while(iter.hasNext){ f(iter.next) } } } object SpreadsheetParser extends Application { implicit def iteratorToWrapper[T](iter:java.util.Iterator[T]):IteratorWrapper[T] = new IteratorWrapper[T](iter) override def main(args:Array[String]):Unit = { val ios = new FileInputStream("assets/data.xls") val workbook = new HSSFWorkbook(ios) …

7
標準のScalaクラスを使用してScalaでJSONを解析する方法は?
私はScala 2.8のJSONクラスのビルドを使用してJSONコードを解析しています。依存関係を最小限に抑えるために、Liftwebを使用したくありません。 私のやり方は非常に必須のようですが、もっと良い方法はありますか? import scala.util.parsing.json._ ... val json:Option[Any] = JSON.parseFull(jsonString) val map:Map[String,Any] = json.get.asInstanceOf[Map[String, Any]] val languages:List[Any] = map.get("languages").get.asInstanceOf[List[Any]] languages.foreach( langMap => { val language:Map[String,Any] = langMap.asInstanceOf[Map[String,Any]] val name:String = language.get("name").get.asInstanceOf[String] val isActive:Boolean = language.get("is_active").get.asInstanceOf[Boolean] val completeness:Double = language.get("completeness").get.asInstanceOf[Double] }
113 json  scala 

1
Scalaのパターンマッチングが変数で機能しないのはなぜですか?
次の関数を取ります: def fMatch(s: String) = { s match { case "a" => println("It was a") case _ => println("It was something else") } } このパターンはうまく一致します: scala> fMatch("a") It was a scala> fMatch("b") It was something else 私ができることは次のとおりです: def mMatch(s: String) = { val target: String = "a" s match { …


1
ジッパーがコモナドである理由の理解
これは私の前の質問に対する回答のフォローアップです。 私は、各項目をマッピングする必要があるとa:AのList[A]のb:B機能をdef f(a:A, leftNeighbors:List[A]): Bして生成しますList[B]。 もちろんmap、リストを呼び出すだけではなく、リストジッパーを使用できます。ジッパーは、リスト内を移動するためのカーソルです。現在の要素(focus)とその隣接要素へのアクセスを提供します。 今、私は自分を置き換えることができfて def f'(z:Zipper[A]):B = f(z.focus, z.left)、この新しい関数を渡すf'にcobindする方法Zipper[A]。 これcobindは次のように機能します。f'ジッパーでそれを呼び出してから、ジッパーを移動f'し、新しい「移動した」ジッパーで呼び出し、ジッパーを再び移動し、以下同様に、ジッパーがリストの最後に到達するまで続けます。 最後に、cobindはタイプの新しいジッパーを返しますZipper[B]。これはリストに変換できるため、問題は解決されます。 今の対称性を注意cobind[A](f:Zipper[A] => B):Zipper[B]し、bind[A](f:A => List[B]):List[B]だからこそListであるMonadとZipperされますComonad。 理にかなっていますか?

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