2

为什么这样有效:

  List(
   "string", "string2"
  )

但这不是吗?

  List{
   "string", "string2"
  }

编译错误:;' expected but ',' found.

但是对于我自己的带有 apply 方法的对象:

object Dictionary {    
  ...    
  private[dictionary] def apply(words: List[Word]) = {
    ...
  }
}

Dictionary { // curly braces works fine
  List ( // but here, for List - I can Not use curly braces
    "hello", "hello2" 
  )
}
4

2 回答 2

3

区别在于逗号——使用括号时只能有一个逗号分隔的参数列表。

你会发现

List {
    3
}

工作得很好。

于 2013-06-18T03:49:53.067 回答
1

关于大括号补充的规范答案。

官方词汇表有用地将块称为副作用和结果值的封装。

最近在 ML 上表达了一些关于牙套及其非尖表亲的意见。

也许在某些情况下认为括号和大括号可以互换是无益的。

用 exprs 和块来思考更容易,在这种情况下,函数 args 可以是逗号分隔的 exprs 或块。

于 2013-06-18T06:25:32.710 回答