这些scala代码行是否等效?

时间:2019-03-28 09:28:40

标签: scala

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

#1和#2是否相等?

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

  2. val foo = myOjbect getSomething "foo"

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

3 个答案:

答案 0 :(得分:6)

它们严格等效。

关于第二个问题,堆栈溢出并不是要决定什么是可接受的还是首选的。然而,您可以参考scala documentation on method invocation来声明:

  

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

// recommended
a + b

// legal, but less readable
a+b

// legal, but definitely strange
a.+(b)
     

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

// recommended
names.mkString(",")

// also sometimes seen; controversial
names mkString ","

答案 1 :(得分:2)

  1. 是的,它们是相同的。
  2. 目前尚无共识(我认为不可能达成共识)哪种形式更可取(此类问题不在此处。)

答案 2 :(得分:2)

是的,它们是相同的。 在开发类似以下的测试时,我主要使用第二版:

result mustEqual "Hello"