首页 > 解决方案 > 这些scala代码行是否等效?

问题描述

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

#1 和 #2 是等价的吗?

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

  2. val foo = myOjbect getSomething "foo"

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

标签: scala

解决方案


它们是严格等价的。

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

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 ","

推荐阅读