给出以下代码:
case class ChangeSet(field:String, from:Object, to:Object)
private var changed:List[ChangeSet] = Nil
def change(field:String, from:Object, to:Object) {
changed.find{ case ChangeSet(field,_,_) => true } match {
case Some(ChangeSet(field,to,_)) => // do stuff
case Some(_) => // do stuff
case _ => // do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
给我带来麻烦的是Some(ChangeSet(field,to,_)).
它编译但似乎正在发生的事情是Scala将其填充为通配符的占位符.我的假设基于以下事实:当我执行以下操作时,Some(ChangeSet(field,to,to))我得到了错误to is already defined as value.
我想要的是to从方法参数创建一个ChangeSet对象.
那可能吗?
目标:编写一个函数,生成一个新的String,不包括指定的字符(由索引标识)
示例:
takeAllExcept(0, "abc") 回报 bctakeAllExcept(1, "abc") 回报 actakeAllExcept(2, "abc") 回报 ab我最初做了什么:
def takeAllExcept( index: Int, s: String ): String = {
val lastIndex = s.length()-1
index match {
case 0 => return s.slice(1, s.length)
case lastIndex => return s.slice(0, s.length()-1)
case _ => { s.slice(0, index) + s.slice(index+1, s.length) }
}
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨语句块case _无法访问.
我是如何修理它的
def takeAllExcept( index: Int, s: String ): String = {
val lastIndex = s.length()-1
if( index …Run Code Online (Sandbox Code Playgroud) 例如,我有代码
def equals(value1:String, value2:String) = value1 match {
case value2 => true
case _ => false
}
Run Code Online (Sandbox Code Playgroud)
我找到了解决方法,但我并不喜欢语法
Run Code Online (Sandbox Code Playgroud)def equals(value1:String, value2:String) = value1 match { case v if v == value2 => true case _ => false }