微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

这些代码无法编译.因为如果(d> 10)println(“大于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(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")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐