I have a following function: def removeLast(list: List[Int]): List[Int] = list match { case List() => List() case List(x) => List() case x :: xs => x :: removeLast(xs) } When I define it and use it from the sbt console everything works just fine. But when I create a worksheet in Intellij IDEA and try to run it then the following exception appears: java.lang.NoSuchMethodError: scala.collection.immu
目標 Scala の Trait がどううれしいかについて論じます. 注意 Scala の Trait は厳密には Mixin なので,以降の文では Mixin という言葉を使いますが,特に気にしないという人は Mixin のことを Trait に置き換えて読んでください. Mixin の簡単な説明 あるクラスに複数の別のクラスの機能を持たせるために多重継承するとき,もし複数の親クラスが同じ名称のメンバー変数や関数を持つとき,子クラスはこの名称のメンバへアクセスするときにどちらの親クラスのメンバにアクセスすればよいか曖昧になる. Mixin を用いることで,継承の順序関係を明らかにでき,さらに子クラスで Mixin の継承先を決定できるため,継承先のクラスを子クラスが柔軟に決定することができる. 使用例 電子マネーのウォレットのような,外部サーバと API を通じて連携するアプリケーション
package com.exsample.repositories import scala.concurrent.Future import slick.driver.MySQLDriver.api._ import slick.jdbc.JdbcBackend.Database import slick.jdbc.GetResult import com.exsample.entities.Table1 trait SlickRepository { def selectAll(): Future[Vector[Table1]] } class SlickRepositoryImpl(db: Database) extends SlickRepository { override def selectAll() = db.run(Sqls.selectAll()) } object S
目標 Scala において, (_ <: AnyVal) のようなwildcard を用いた定義式がどううれしいかを論じる. wildcard の簡単な説明 generic type を用いるとき,型安全性のため Covariant な型(A <: B のときのA)の操作に制限がある.例として,型安全のために, covariant type の compound type (List[A] や Set[A], Array[A])に別の covariant type を挿入できうる操作が定義できないことがある. (詳しくは使用例で)そこで,wild card を用いることにより,generic type に対しするメソッドを型安全となるよう柔軟に定義できる. 使用例とメリット 独自の Int クラスと Double クラス, List クラスを定義し,独自の List クラスに Int や
目標 Scala の implicit (暗黙的な型変換)があるとどううれしいか紹介する. implicit の簡単な紹介 型の不一致を解消するための型変換の操作が繰り返し実装に現れると,コードのシンプルさが失われ可読性が落ちる.そこで, implicits を用いることで暗黙的に型の不一致を解消でき,シンプルでわかりやすいコードを記述することができる.さらにこれを応用させて,組み込み型のクラスに対してあたかも新しいメソッドを追加したようにメソッドを呼び出すことができる. 使用例とメリット 異なる複数の通貨間で加算と減算を実行するコードを書く場合を取り上げて, implicit により実装がシンプルになる例を紹介する.ここでは 100 円 + 1 ドル (= 111円) = 211 円 などの演算を想定する.円,ドル,ユーロ,それぞれの貨幣を示すクラス, Yen, Dollar, Euro
package com.example.common import play.api.mvc._ import play.api.libs.json._ import scala.concurrent.Future abstract class JsonValidatedController(cc: ControllerComponents) extends AbstractController(cc) { def async[A](request: Request[AnyContent])(async: A => Result)(implicit reads: Reads[A]) = { Future.successful { val json = request.body.asJson.map(_.validate(reads)) json match { case Some(s: J
こちらで、Spark StreamingからRDBへのデータ書き出しの作業の流れ(Spark Streaming / JDBC連携)を確認した上で、Spark StreamingによるTwitter構文解析※データを、PostgreSQLに格納した手順をまとめます。 実行環境は次の通りです。 ・CentOS 7.5 ・PostgreSQL 9.2.23 ・Apache Spark 2.3.1 ・Scala 2.12.6 ・kuromoji 0.7.7 ・Spark Streaming Twitter 2.10 rev 1.1.0 ・Twitter4J 3.0.3 PostgreSQL : 格納用テーブルの作成 目的)60秒毎に「iPhone6」が含まれるTweet中に出現する単語とその頻度をカウントし、先頭10件の単語情報を格納対象とする psql -d mydb -U postgres
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く