0

@lucastexが Java Elvis 演算子について投稿したので、同じ効果を得るために Scala で何かを試しました。

?:演算子が引数と同じ型のオブジェクトを取ることで、すべてを新しい構造型に変換しました。だから、言って:

implicit def toRockStar[B](v : B) = new { 
                            def ?:(opt: => B) = if (v == null) opt else v}
val name: String = "Paulo" // example

なぜname ?: "Lucas"取得"Lucas"してname.?:{"Lucas"}取得するのPauloですか?新しい構造型は、 nullでない場合、つまり"Paulo"上記のコードの場合、すべての初期値を返すことになっています。

私は少し混乱しています。説明はありますか?

4

2 に答える 2

6

演算子は で終わります:。これは、中置表記の場合、右から左に読み取ることを意味します。例えば:

scala> 1 :: Nil == Nil.::(1)
res2: Boolean = true

ただし、すべてのメソッドはドット表記で左から右に読み取られます。したがって、実際にはメソッドをLucas中置記法とnameドット記法に適用しています。

ちなみに、Elvis 演算子はJava 7 に含めることは認められませんでした。

于 2009-10-22T19:13:51.310 に答える
2

記録のために(次の記事を検索しながらこのスレッドを見つけました...)、Daniel Spiewak(Scalaの世界でもう1つの有名なDaniel ...)は、ScalaでのGroovyのエルビス演算子の実装に関する記事を投稿しました。

于 2011-03-25T16:27:01.030 に答える