gpt4 book ai didi

scala - 在 Scala 中,在某些情况下是否需要分号?

转载 作者:行者123 更新时间:2023-12-04 21:52:03 24 4
gpt4 key购买 nike

我正在研究 Scala 并尝试在我最近的项目中使用它。问题来了。这是我关于分号必要性的问题之一。这是我的例子:

var str = "123.4"
var d = str toDouble
if(d > 10)
println("Larger than 10")

这些代码无法编译。因为 if(d > 10) println("Larger than 10")返回值,编译器认为该值是 toDouble 的参数方法。但是, toDouble没有参数。这会导致错误。

解决这个问题的最简单方法是在第 2 行的末尾添加一个分号。就像这样:
var str = "123.4"
var d = str toDouble;
if(d > 10)
println("Larger than 10")

这让我很困惑,我认为我根本不需要分号,因为我不会将两个语句放在同一行。有些行以分号结尾而其他行没有,这让我感到不舒服。还有,有意义吗?

最佳答案

汇总可能的答案:要编写没有语法错误的相同内容,您可以使用:

  • 分号
    var d = str toDouble;
    if (d > 10) println("Larger than 10")
  • 点语法
    var d = str.toDouble
    if (d > 10) println("Larger than 10")
  • 插入语
    var d = (str toDouble)
    if (d > 10) println("Larger than 10")
  • 大括号
    var d = {str toDouble}
    if (d > 10) println("Larger than 10")
  • 空行分隔符
    var d = str toDouble

    if (d > 10) println("Larger than 10")

  • 选择适合您风格的那一款。
    但在普通(非 DSL)代码中,您通常会遇到带点的版本

    [最] 常用的分号用法是简单的 for具有多个绑定(bind)的表达式。
      for(i <- 1 to 4; j <- 1 until i) println(f"$j < $i")

    顺便说一句,它也可以重构为无分号版本:
      for{i <- 1 to 4
    j <- 1 until i} println(f"$j < $i")

    关于scala - 在 Scala 中,在某些情况下是否需要分号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743009/

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