我的一个scala类中有一个变量,其值仅在调用特定方法时第一次设置.方法参数值将是字段的初始值.所以我有这个:
classX {
private var value: Int= _
private var initialised = false
def f(param: Int) {
if (!initialised){
value = param
initialised = true
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否有更像scala的方式来做到这一点?选项似乎有点太麻烦......
我是Scala的新手,我的功能如下:
def selectSame(messages: BufferedIterator[Int]) = {
val head = messages.head
messages.takeWhile(_ == head)
}
Run Code Online (Sandbox Code Playgroud)
这是从缓冲迭代器中选择只匹配头部的元素.我随后使用此代码:
val messageStream = List(1,1,1,2,2,3,3)
if (!messageStream.isEmpty) {
var lastTimeStamp = messageStream.head.timestamp
while (!messageStream.isEmpty) {
val messages = selectSame(messageStream).toList
println(messages)
}
Run Code Online (Sandbox Code Playgroud)
在第一次执行时,我按预期得到(1,1,1),但后来我只得到了List(2),好像我丢失了一行元素...可能我对迭代器/列表做错了,但我在这里有点迷失.