Hatena::ブログ(Diary)

すにぺっと

2011-04-21

play-scalaを改めて学ぶ-7 Scalaでplayのテンプレートを使う

| 08:58 | play-scalaを改めて学ぶ-7 Scalaでplayのテンプレートを使うを含むブックマーク

今日は

http://scala.playframework.org/documentation/scala-0.9/templates

のあたりを読んでみる。


Dealing with Scala types in Play templates

デフォルトで、ScalaでもJavaと同じテンプレートエンジンを使用できるが、

Scalaプラグインは、いくつかのScalaネイティブ機能をサポートするために強化されている。


Boolean operations on Option and Seq types

boolan演算において、Optionとシーケンス型を安全に使用することができる。

1.Noneがfalseとして評価される

2.Someがtrueと評価される

3.空のseqがfalseに評価される

4.空でないseqがtrueと評価される

このように、 ?:演算子とOption型を使用できる。

Hello ${name ?: 'Guest'} 

Safe navigation for Option types

Option型に含まれているメンバをより深く移動する必要がある場合、

演算子を使用すると、自動的にSomeの値を展開していき、

Noneの値は無視してくれる。

例えば、user変数がOption[User]を参照している場合、

${user?.name?.toUpperCase()}

user変数はNoneでも、エラーはtrowされず、空の文字列が表示される。

また、式(${user}みたいに)を使用してOptonを表示するとき 、

値が表示されるが、値がNoneの場合は空文字列が表示される。


Litteral access to elements of a Seq

テンプレートScalaのSeq型の任意の値にアクセスするために、

リテラルを使用することができる。

def index = Template('items -> List(1,2,3))

---- index.html
<h1>${items[1]}</h1>

Optionでうまく処理してくれるのはほんと嬉しい。

トラックバック - http://d.hatena.ne.jp/sy-2010/20110421/1303343895