【问题标题】:Scala code - Strange behaviour [duplicate]Scala代码 - 奇怪的行为[重复]
【发布时间】:2016-09-19 11:56:05
【问题描述】:

我正在学习 scala 方法,我创建了两个代码示例,它们在本质上有些相似,但在调用它们时感到困惑。

方法#1

def someTestMethod = {
    println("Inside a test method")
}

这诉诸Unit 类型,因为它不返回任何内容。

方法#2

def anotherTestMethod() = {
    println("Inside a test method")
}

这也使用Unit,但添加了花括号()

这两种方法有什么区别,注意如果我像someTestMethod()这样调用第一种方法,scala shell/compiler会说

错误:单元不带参数,但如果我像someTestMethod 那样不带大括号调用的话效果很好。

另外,第二种方法似乎是万无一失的,从某种意义上说,它可以被称为anotherTestMethodanotherTestMethod(),这是为什么呢?

【问题讨论】:

标签: scala


【解决方案1】:

当你不想向方法传递任何参数时,使用第一个。

如果要传递一些传递参数,请使用第二个带括号并传递一些参数并在方法内部使用。

例如:

def someTestMethod1(count : Int) = {
    println("Inside a test method"+count)
  }

  someTestMethod1(10)

【讨论】:

  • 这几乎是完全错误的。当然你需要 () 来传递参数,但是没有参数是有区别的,你不想总是在没有参数的情况下使用它(正如链接到副本所解释的那样)。
猜你喜欢
  • 2019-01-25
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2023-03-31
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
相关资源
最近更新 更多