我正在学习
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 举报,一经查实,本站将立刻删除。