【发布时间】:2020-04-30 06:22:28
【问题描述】:
我有以下代码:
def foo(str: String, key: Char) : String = {
breakable{
for(it <- 0 until str.length){
if(str.charAt(it) != key){
str.slice(0, it) + str.slice(it+1, str.length)
break
}
}
}
str
}
但是,str.slice(0, it) + str.slice(it+1, str.length) 永远不会返回,只有 str。
有谁知道我该如何解决这个问题?
【问题讨论】:
-
在scala中如果没有return关键字,最后一句会被返回。由于最后一句是
str,因此将返回此值。您不会在代码中以任何方式更改str。 -
似乎您试图找到一些非法符号并将其从字符串中首次出现,您可以通过 replaceFirst 方法简单地做到这一点:
str.replaceFirst(key.toString, "") -
比这更复杂,我只是发布了问题的基本部分。由于抄袭的原因,我不能发布其余的内容。当 if 语句为真时,我只需要能够返回
str.slice(0, it) + str.slice(it+1, str.length)。 -
if(){v}没有else返回一个Unit,无论v的类型是什么。这段代码有几种代码味道。 -
既然你说这是一项任务,那么值得一提的是你是什么,不被允许做什么。
标签: string scala methods return substring