目标:写,其生成一个新的字符串的功能不包括指定的字符(由索引标识)为什么斯卡拉抱怨时,这种模式匹配的整数值?
例:
takeAllExcept(0, "abc")
返回bc
takeAllExcept(1, "abc")
返回ac
takeAllExcept(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) }
}
}
编译器会抱怨,对于case _
语句块不可达。
我如何固定它
def takeAllExcept(index: Int, s: String): String = {
val lastIndex = s.length()-1
if(index == 0)
return s.slice(1, s.length)
if(index == lastIndex)
return s.slice(0, s.length()-1)
s.slice(0, index) + s.slice(index+1, s.length)
}
我想知道为什么我的初步尝试用不到的代码失败。它看起来对我来说合法。另外,scala中是否有内置的工具已经这样做?
不'情况lastIndex'创造的,而不是匹配现有变量值的*新的变量*用相同的名字,? – dave4420 2011-03-01 11:24:43
模式匹配变量,在反引号中使用其名称 – coubeatczech 2011-03-01 11:56:23
它与小写变量名称有关。改用'LastIndex'。海事组织,小写“功能”是一个很大的错误。 – Jus12 2011-03-02 04:03:16