我是一名經驗豐富的 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!"
}
}
我不明白的是,為什么我不能只列印輸入?如果我取消注釋列印陳述句,整個代碼都會中斷。這對我來說沒有意義。
錯誤:
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 資源!
uj5u.com熱心網友回復:
對于 Scala 2(可在 Codewars 上獲得),您需要將整個函式體包裝在大括號中,否則編譯器會將其視為回傳warnTheSheepCheck的呼叫:printlnUnit
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
}
Scala 3 具有可選的大括號功能,允許在這種情況下省略大括號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/446196.html
