下面是我的scala代码,但是第13行,有一个错误说"缺少参数类型",不确定我的问题是什么?
class OneAway {
def isOneAway(s1:String, s2:String):Boolean={
if(s1.equals(s2))
return true
else if( s1.length > s2.length + 1 || s1.length < s2.length - 1)
return false
else
{
var count:Int=0
s1.chars().forEach(a=>{
if(a!=s2.charAt(count)){
return s2.substring(count+1).equals(s1.substring(count)) || s1.substring(count+1).equals(s2.substring(count))
}
count=count+1
}
)
return true
}
}
}
答案 0 :(得分:5)
foreach
应全部为小写,并且会丢失其中的花括号。
另外,即使你没有问......这是编写scala代码的可怕方法。在您遇到的99%的情况下,您将希望避免使用返回,可变状态和(有一些例外)对序列的索引访问。 在某些情况下,您的代码也会抛出非法索引异常。
在scala中执行所需操作的正确方法是:
@tailrec
def isOneAway(s1: String, s2: String): Boolean = (s1.headOption, s2.headOption) match {
case (None, None) => true
case (a,b) if a == b => isOneAway(s1.tail, s2.tail)
case _ if s1.length == s2.length + 1 => s1.tail == s2
case _ if s2.length == s1.length + 1 => s2.tail == s1
case _ => false
}
答案 1 :(得分:4)
应该是
s1.foreach(a=>{....})
chars()来自java8,你正在使用scala。你可以简单地在String对象上使用foreach。