这些scala代码行是否等效?

Rya*_*our 0 scala

给定一个对象myObject,它具有方法getSomething,该方法接受String参数并返回String

#1和#2等价吗?

  1. val foo = myOjbect.getSomething("foo")

  2. val foo = myOjbect getSomething "foo"

并且可以接受/优先于另一个吗?什么时候使用1 vs 2,反之亦然?

Oli*_*Oli 6

它们严格等效。

关于第二个问题,Stack Overflow并不是要决定什么是可接受的还是首选的。但是,您可以参考有关方法调用的scala文档,该文档说明了这一点:

Scala具有特殊的无标点语法,用于调用带有一个参数的方法。许多Scala程序员将这种表示法用于符号命名的方法:

// recommended
a + b

// legal, but less readable
a+b

// legal, but definitely strange
a.+(b)
Run Code Online (Sandbox Code Playgroud)

但对于几乎所有以字母命名的方法,都应避免使用它:

// recommended
names.mkString(",")

// also sometimes seen; controversial
names mkString ","
Run Code Online (Sandbox Code Playgroud)