62

30分探しましたが、まだわかりません。

SIP: Modularizing Language Featuresには、Scala 2.10 で明示的に「有効化」する必要がある多くの機能があります ( import language.feature)。その中には がありpostfixOps、どこにも参照が見つかりません。この機能は正確に何を可能にしますか?

4

3 に答える 3

63

後置位置で演算子構文を使用できます。例えば

List(1,2,3) tail

それよりも

List(1,2,3).tail

この無害な例では問題にはなりませんが、あいまいさが生じる可能性があります。これはコンパイルされません:

val appender:List[Int] => List[Int] = List(1,2,3) ::: //add ; here
List(3,4,5).foreach {println}

そして、エラーメッセージはあまり役に立ちません:

    value ::: is not a member of Unit

タイプ:::の呼び出しの結果でメソッドを呼び出そうとします。これは、プログラマーが意図したものではない可能性があります。正しい結果を得るには、最初の行の後にセミコロンを挿入する必要があります。foreachUnit

于 2012-10-22T12:17:09.257 に答える
5

これは、後置演算子として nullary (引数リストまたは空の引数リストなし) メソッドを呼び出す機能を指します。

例:

case class MyBool(value: Boolean) {
    def negated = new MyBool(!value)
}
val b1 = MyBool( true )
val b2 = b1 negated // Same as b1.negated

参照: http://www.scala-lang.org/node/118

于 2012-10-22T12:16:47.450 に答える