隐含在 scala Class 构造函数中
implicits in scala Class constructors
我不明白为什么下面三个示例中只有一个有效?是什么让其他两个有问题?
class H(implicit a:String, b: Int) {
//Working
}
class H(a:String, implicit b: Int) {
//Not-Working
}
class H(implicit a:String, implicit b: Int) {
//Not-Working
}
class H1(implicit a:String, b: Int) {
//Working
}
以下两种情况需要val或var
class H2(a:String, implicit val b: Int) {
//Working
}
class H3(implicit a:String, implicit val b: Int) {
//Working
}
在第一种情况下,implicit
不是指 a
,而是指整个参数列表。这意味着“a
和 b
可以在调用构造函数时隐式提供”(并且还使它们在 class 主体中作为隐式提供)。从这个意义上说,您不能为 class 或方法 implicit
创建单个参数。
implicit
的第二个用途是标记type/object成员。构造函数参数不是成员,但可以通过使用 val
/var
使其成为成员,如 pamu 的回答;或者,为了避免使其可见,private[this] val
.
我不明白为什么下面三个示例中只有一个有效?是什么让其他两个有问题?
class H(implicit a:String, b: Int) {
//Working
}
class H(a:String, implicit b: Int) {
//Not-Working
}
class H(implicit a:String, implicit b: Int) {
//Not-Working
}
class H1(implicit a:String, b: Int) {
//Working
}
以下两种情况需要val或var
class H2(a:String, implicit val b: Int) {
//Working
}
class H3(implicit a:String, implicit val b: Int) {
//Working
}
在第一种情况下,implicit
不是指 a
,而是指整个参数列表。这意味着“a
和 b
可以在调用构造函数时隐式提供”(并且还使它们在 class 主体中作为隐式提供)。从这个意义上说,您不能为 class 或方法 implicit
创建单个参数。
implicit
的第二个用途是标记type/object成员。构造函数参数不是成员,但可以通过使用 val
/var
使其成为成员,如 pamu 的回答;或者,为了避免使其可见,private[this] val
.