我是一个经验丰富的Python开发人员,我必须学习Scala作为我的新工作。我在用CodeWars练习Python时玩得很开心,并决定尝试使用Scala,但有些事情我无法理解.
贝娄我有一个练习的部分解决方案,你可以在这里找到它,https://www.codewars.com/kata/5c8bfa44b9d1192e1ebd3d15/train/scala
object SheepAdvisor {
def warnTheSheepCheck(queue: Array[String]): String =
// println(queue)
if (queue.last == "wolf") {
"Pls go away and stop eating my sheep"
} else {
s"Oi! Sheep! You are about to be eaten by a wolf!"
}
}我不明白的是,为什么我不能直接打印输入?如果取消对print语句的注释,整个代码就会中断。对我来说没什么意义。
错误:
src/main/scala/solution.scala:4: error: type mismatch;
found : Unit
required: String
println(queue)
^
src/main/scala/solution.scala:5: error: not found: value queue
if (queue.last == "wolf") {我真的习惯于用一些小部件来解决问题,通常是打印一些东西来验证我是否走上了正确的道路。这是我不知道的Scala的某种范式转变吗?
任何专注于来自Python的人的Scala资源都会非常感谢!
发布于 2022-03-20 20:39:05
对于Scala 2(可在Codewar上使用),需要将整个函数体封装在花括号中,否则编译器将warnTheSheepCheck视为对返回Unit的println的调用。
object SheepAdvisor {
def warnTheSheepCheck(queue: Array[String]): String = { // here
println(queue)
if (queue.last == "wolf") {
"Pls go away and stop eating my sheep"
} else {
s"Oi! Sheep! You are about to be eaten by a wolf!"
}
} // and here
}https://stackoverflow.com/questions/71550437
复制相似问题