首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >很难理解Scala的基本知识

很难理解Scala的基本知识
EN

Stack Overflow用户
提问于 2022-03-20 20:33:32
回答 1查看 50关注 0票数 0

我是一个经验丰富的Python开发人员,我必须学习Scala作为我的新工作。我在用CodeWars练习Python时玩得很开心,并决定尝试使用Scala,但有些事情我无法理解.

贝娄我有一个练习的部分解决方案,你可以在这里找到它,https://www.codewars.com/kata/5c8bfa44b9d1192e1ebd3d15/train/scala

代码语言:javascript
复制
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语句的注释,整个代码就会中断。对我来说没什么意义。

错误:

代码语言:javascript
复制
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资源都会非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 20:39:05

对于Scala 2(可在Codewar上使用),需要将整个函数体封装在花括号中,否则编译器将warnTheSheepCheck视为对返回Unitprintln的调用。

代码语言:javascript
复制
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具有可选支撑特性,允许在这个案例中省略大括号。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71550437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档