此代码:
package neuralnetwork
object hopfield {
println("Welcome to the Scala worksheet")
object Neuron {
def apply() = new Neuron(0, 0, false, Nil, "")
def apply(l : List[Neuron]) = new Neuron(0, 0, false, l, "")
}
case class Neuron(w: Double, tH: Double, var fired: Boolean, in: List[Neuron], id: String)
val n2 = Neuron
val n3 = Neuron
val n4 = Neuron
val l = List(n2,n3,n4)
val n1 = Neuron(l)
}导致编译错误:
type mismatch; found : List[neuralnetwork.hopfield.Neuron.type] required: List[neuralnetwork.hopfield.Neuron]在线:val n1 = Neuron(l)
为什么会发生这种情况?什么是不正确的实现,是阻止列表被添加?
发布于 2014-08-20 08:58:33
在传入类型时,n2、n3和n4有类型Neuron.type,尝试添加括号:
val n2 = Neuron()
val n3 = Neuron()
val n4 = Neuron()
val l = List(n2,n3,n4)
val n1 = Neuron(l)不同之处在于,使用括号,您实际上得到了一个Neuron类(您调用了apply方法),类型将是Neuron而不是Neuron.type。
编辑:
.type表示法称为单例类型,它仅表示类表示的对象,在本例中,Neuron.type只返回该单例对象,在第9页的Odersky关于scala概述的文章中有更多的信息。
https://stackoverflow.com/questions/25400582
复制相似问题