加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 18:24:23 所属栏目:安全 来源:网络整理
导读:我正在学习 scala并尝试在我最近的项目中使用它.问题来了.这是关于分号必要性的问题之一.这是我的例子: var str = "123.4"var d = str toDoubleif(d 10) println("Larger than 10") 这些代码无法编译.因为如果(d 10)println(“大于10”)返回值,并且编译器认
我正在学习 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")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读