gpt4 book ai didi

scala:方法的返回值并过早地结束该方法

转载 作者:行者123 更新时间:2023-12-01 08:26:48 25 4
gpt4 key购买 nike

我刚刚开始使用 Scala,请多多包涵。

我正在编写一个方法,它根据在给定列表中找到的“*”的数量返回 bool 值。

def stars(n: Int, chars: List[Char]): Boolean = {
var count = 0
chars.foreach{ letter =>
if (letter == "*") {
count += 1
}
if (count == n) {
return true
}

}
false
} //> stars: (n: Int, chars: List[Char])Boolean

stars(5, "******".toList) //> res12: Boolean = false

那应该返回 true。因为它应该在计数变为 5 时提前结束,这等于 n

我做错了什么?

难道 scala 不允许使用 return 语句提前结束一个方法吗?

最佳答案

if (letter == "*") 中,您将 char 与 string 进行比较,因此不断得到 false 并且您的 count += 1 永远不会被评估
你必须写 if (letter == '*') 而不是

实际上,更惯用的代码是:

def stars(n: Int, chars: List[Char]): Boolean = {
n == chars.count(c => c == '*')
}

关于scala:方法的返回值并过早地结束该方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12632096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com