Wenn es nur zwei Teile gibt, wird der Ausdruck als Methodenaufruf angesehen. I.e. die einzige Möglichkeit für
println "Hello, world"
println."Hello, world"
wäre, was natürlich viel Sinn hier nicht machen. (***** siehe unten für eine Ergänzung)
Wenn Sie möchten, können Sie jedoch Console println "Hello, World"
schreiben, um die Mehrdeutigkeit zu beheben.
ist es nicht, dass ambigus im String Beispiel aussehen, eine Zeichenfolge kaum ein Methodenname sein könnte, aber denken Sie an den folgenden:
class B
val b = new B
object A {
def apply(myB: B) { print("apply") }
def b { print("b") }
}
Nun, wenn A b
schreiben, was bekomme ich. Wie sollte es interpretiert werden? Es stellt sich heraus, dass:
So gibt es eine klare Regel, was in einem zweiteiligen Ausdruck zu tun. (Ich hoffe, niemand beginnt Haarspalterei über apply
und echte Methodenaufruf ...)
Zusatz
Mit dem Aufkommen von dynamischen Klassen, können Sie Spielzeug ein wenig herum und definieren die folgenden
object println extends Dynamic {
def typed[T] = asInstanceOf[T]
def applyDynamic(name: String)(args: Any*) = Console.println(name)
}
Und jetzt schau !, keine Klammern:
println `Hello, world` // prints, "Hello, world"
Natürlich bitte tun Sie das nicht in f ront von Kindern oder im realen Code.
Syntax ist Zeremonie? –