このエントリはPlay frameworkひとりアドベントカレンダーの13日目です。
昨日からviewをいじってますが、Play framework 2ではviewとして Scala
を使うのです。。。
というわけでtemplateとして使う範囲で便利なScala文法について覚えましょう。 これくらいならウエッってならないと思います。たぶん。
キホンのキ
@なんとか
はScalaとして解釈されるようです。
変数呼び出し
@変数名
と書くと変数が出力されます。
@title
@content
オブジェクトのプロパティはそのまま 変数名.プロパティ名
で呼び出せます。
@(twowa :Twowa)
オブジェクトがMapの場合、 @変数名("キー名")
で呼び出せます。
hoge.get("attr1")
を呼び出す場合はこんな感じ。
@(hoge :HashMap[String,String])
型宣言
Scalaの型宣言は後ろに書きます! これだけ気をつけましょう。
@(title :String, message :String, amount :Long)
List, Mapの内包型
上でもちょっと登場しましたが、[クラス名]
とか [クラス名, クラス名]
とかそんなかんじ。
@(twowas :List[Twowa], myHashMap :HashMap[String, String], twowaRanks :HashMap[String,List[Twowa]])
Object型
Any
です。
@(bucket :HashMap[String, Any])
ループ
foreach的な呼び出しが <-
を使ってとてもきれいに書けます。
@(twowas :List[Twowa])
@for(twowa <- twowas){
ちなみに回数が決まってるループも n to N
を使ってきれいに書けます。
@for(i <- 1 to 10){
@i
}
分岐
if
です。やっぱりね。
@if(twowa.id < 1000){
初期ユーザ特典!!!
}
型変換(キャスト)
@defining
と Any#asInstanceOf
を使います。
ややこしいですが丸暗記してください。
@defining(.asInstanceOf[<キャスト後の型>]){ 変数名 =>
もろもろ
}
@(twowaMap :HashMap[String, Any])
@defining(twowaMap.get("selectedAt").asInstanceOf[Date]){ selectedAt =>
selected at @selectedAt
}
@defining(twowaMap.get("bestTwowa").asInstanceOf[Twowa]){ bestTwowa =>
Best Twowa
@bestTwowa.contents by @bestTwowa.userId at @bestTwowa.createdAt
}
テンプレート呼び出し
すでに @main
でわかってると思いますが、 @ファイル名(引数)
で呼び出せます。
例えば main.scala.html
は
@(title: String)(content: Html)
なので、使うときは
@main("title in string"){contents in html}
という形。簡単ですね。
やったねヽ(`▽´)/