Webjarsのホームページから、Bootstrapに必要なライブラリを探して、libraryDependenciesに追加をします。Webjarsを使うのに必要な、webjars-playのライブラリも追加しています。 name := """WebjarsTest""" organization := "jp.co.example" version := "1.0-SNAPSHOT" lazy val root = (project in file(".")).enablePlugins(PlayScala) scalaVersion := "2.12.6" libraryDependencies ++= Seq( guice, "org.webjars" %% "webjars-play" % "2.6.3", "org.webjars" % "bootstrap" % "4.1.3"
他のウェブフレームワークと同様にPlayでもDIができるようになっています。DIというのは、JSR330で規定されている依存性の注入の手法であり、Play Framework(2.4以降?)では、GoogleのGuiceというライブラリを使って実現されています。そんなに難しいわけではないのですが、原理とやり方をきちんと理解しないとなかなかとっつきにくい印象があります。AkkaのActorと組み合わせた例で説明したいと思います。 Play FrameworkにおけるDI まず、JSR330を使うということは、javax.injectパッケージのアノテーションを使うということだということを理解する必要があります。何かのコンポーネントに対して依存性の注入を行うためには、@Injectアノテーションを使ってクラスを修飾します。ちなみに、scala(Play)の場合はコンストラクタで宣言するのが一般
プログラムは動かさないと始まらない!最初は動かなくて嵌るかもしれない。 でも自分の手を動かして書いたソースが動き始めるともっと書きたくなってくるはず! 手を動かすことに喜びを感じたら、プログラミングの才能があるね! 最初はうまく書けなくても良いんだよ。 とにかくソースを書いて動かしてみようぜ!! 事前準備 まずは動作環境が必要だ。Windows7しか想定してない。すまん。 JavaとScalaのインストール・ダウンロード 以下のバージョンでダウンロードしインストールする。 Java SE 7u21 http://www.oracle.com/technetwork/java/javase/downloads/index.html scala-2.10.1 http://www.scala-lang.org/downloads 環境変数の設定 JAVA_HOME JAVA_HOME=C:\P
Option型って知っているかい?これマジ凄いよ! NullPointerException、通称 ヌルポ 。 少し込み入ったJavaアプリを作って動かすと、大抵発生するよね。 nullチェックを入れてたり、規約で縛ったりして対応することになると思います。 だけど、コンパイル時に見つけることができれば、、、と思ったことない? Option型を上手く使えれば、コンパイル時にnullチェックみたいなことができてしまうんだ。 とても素敵だよね! では、Option型について語ってみます。 Optionとは 値があるかないかを表す型です。箱って言っても良いかもですね。 Optionは更に2種類のサブクラスを持っている。 Some None Some 値があることを表す型。値を持っている。 None 値がないことを表す型。 Optionを使ってみる 淡白に説明してみたので、早速使ってみよう! Opt
I have seen a function named implicitly used in Scala examples. What is it, and how is it used? Example here: scala> sealed trait Foo[T] { def apply(list : List[T]) : Unit }; object Foo { | implicit def stringImpl = new Foo[String] { | def apply(list : List[String]) = println("String") | } | implicit def intImpl = new Foo[Int] { | def apply(list : List[Int]) = println("Int") | } | } ; def foo[A :
val fruits = List("apple", "banana", "avocado", "papaya") val countsToFruits = // count how many 'a' in each fruit fruits.groupBy(fruit => fruit.count(_ == 'a')) for (count, fruits) <- countsToFruits do println(s"with 'a' × $count = $fruits") // prints: with 'a' × 1 = List(apple) // prints: with 'a' × 2 = List(avocado) // prints: with 'a' × 3 = List(banana, papaya)
We are very happy to announce the final release of Scala 2.10.4! The release is available for download from scala-lang.org or from Maven Central. The Scala team and contributors fixed 33 issues since 2.10.3! In total, 36 RC1 pull requests, 12 RC2 pull requests and 3 RC3 pull requests were merged on GitHub. Known Issues Before reporting a bug, please have a look at these known issues. Scala IDE for
We are very pleased to announce the final release of Scala 2.11.0! Get started with the Hello Scala 2.11 template in Typesafe Activator Download a distribution from scala-lang.org Obtain it via Maven Central There have been no code changes since RC4, just improvements to documentation and version bump to the most recent stable version of Akka actors. Here’s the difference between the release and R
We are very pleased to announce the release of Scala 2.11.2! Get started with the Hello Scala 2.11 template in Typesafe Activator Download a distribution from scala-lang.org Obtain it via Maven Central Scala 2.11.2 is a bugfix release that is binary compatible with previous releases in the Scala 2.11 series. The changes include: Several issues in the collections library were resolved, most notably
This proposal has been implemented with some changes in Scala 3.0.0. Authors: Erik Osheim and Jorge Vicente Cantero Supervisor and advisor: Sébastien Doeraene History Date Version Introduction This is a proposal to introduce syntax for type aliases that only exist at compile time and emulate wrapper types. The goal is that operations on these wrapper types must not create any extra overhead at run
By: Martin Odersky and Jeff Olson and Paul Phillips and Joshua Suereth Note from the SIP Committee: we think future SIP(s), using work from SIP-15, can provide more benefit to numerical computing users. The SIP as it exists benefits all users of implicit enrichment classes, and takes us much further to unboxed high performance code. This SIP does not exclude further work towards improving numerica
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く