为什么可以';我不能调用Scala Seq.empty[Int]()方法吗?
我试图创建一个名为为什么可以';我不能调用Scala Seq.empty[Int]()方法吗?,scala,Scala,我试图创建一个名为\u 1d\u matrix的类,它是一个1d矩阵。我想用0填充它 因此,我尝试调用Seq对象的empty方法(当然不是trait),如文档中提到的:$.html\empty[A]:CC[A] 目前我的代码是: class Calc(val width : Int) { private val _1d_matrix : Seq.empty[Int]() } 但有三个错误: 为空未定义 ()无法写入(2个错误:“或应换行符”+“应定义或声明”) 我认为这是因为不允许直
\u 1d\u matrix
的类,它是一个1d矩阵。我想用0填充它
因此,我尝试调用Seq
对象的empty
方法(当然不是trait),如文档中提到的:$.html\empty[A]:CC[A]
目前我的代码是:
class Calc(val width : Int) {
private val _1d_matrix : Seq.empty[Int]()
}
但有三个错误:
为空
未定义()
无法写入(2个错误:“或应换行符”+“应定义或声明”)我认为这是因为不允许直接使用
Seq
而不是List
(例如)。但是:为什么?毕竟,Seq
是一个对象(也是一个特征,但不在我的代码中)。初始化字段的正确方法如下所示:
private val _1d_matrix = Seq.empty[Int]
或
在scala中定义0-arity(无参数)方法有两种方法-在名称def exit()
后有一对括号,而没有括号:def empty
以前一种方式定义时,可以使用括号或不使用括号调用它:exit()
或exit
-两者都可以。但是当括号未包含在方法定义中时,您也不能在调用站点使用它们:Seq.empty[Int]
有效,但Seq.empty[Int]()
无效
惯例是对有副作用的函数使用括号,而不是对纯函数调用使用括号
代码的另一个问题是您有一个:
,需要将其作为作业
因此,类似这样的方法应该会奏效:
val _1d_matrix = Seq.empty[Int]
您的想法是正确的,但有几个语法错误
private val\u 1d\u矩阵:Seq.empty[Int]()
:
此处用于定义类型注释,因此它尝试查找类型Seq.empty
,而不是方法。这失败了,因为没有这样的类型
使用=
来指定值。在这里添加类型是可选的,因为Scala能够推断正确的类型
另一个是empty方法的定义没有paren,因此必须使用Seq.empty[Int]
而不是Seq.empty[Int]()
val _1d_matrix = Seq.empty[Int]