2011年4月8日金曜日

nullや""をfalseに

http://d.hatena.ne.jp/xuwei/20110227/1298779615 のブログを見て、ふむふむと。
まだまだ勉強中なので、色々と参考になります。
んで、コメント欄に
>Groovyだと実行時にnullも""もfalseに変換してくれるのでif文の条件に直接文字列を渡せます
あーなるほど。たしかに、それはjavaにもscalaにないというか、scalaでも直接は表現できない様な便利な機能かもしれませんね。ありがとうございます (原文ママ)
ってあったので、あれ?と思ってしまった。
まぁ「scalaでも直接は表現できない様な
」っていう意味がちょっと分からなかったんですが、Scalaでもそういう動きをさせることはできますよね。
scala> implicit def stringToBoolean(s: String) = s != null && s != ""
stringToBoolean: (s: String)Boolean
 
scala> var str = "Hoge"
str: java.lang.String = Hoge
 
scala> println(if (str) "Hello!" else "Empty")
Hello!
 
scala> str = null
str: java.lang.String = null
 
scala> println(if (str) "Hello!" else "Empty")
Empty
 
scala> str = ""
str: java.lang.String =
 
scala> println(if (str) "Hello!" else "Empty")
Empty

こんな感じで。

0 件のコメント:

コメントを投稿