读书人

scala代码一个蛋痛的bug

发布时间: 2012-11-12 12:31:58 作者: rapoo

scala代码一个蛋疼的bug

scala> object Test {     | def m1 = 1 + 1     | +1 + 1     |      | def m2 = 1 + 1 +     | 1 + 1     | }defined module Testscala> Test.m1res0: Int = 2scala> Test.m2res1: Int = 4

?

今天在自己的代码发现了个bug,有个方法返回离奇的数据,该方法类似上面m1的写法。

?

由于?def m1 = 1 + 1已经是完整的定义,而且scala允许在方法体外写表达式, 这些表达式都将作为默认构造函数的代码执行。

所以上面的代码其实是被拆分为方法def m1 = 1 + 1和构造函数的一行表达式 + 1 + 1。为了安全起见以后的方法定义最好加上大括号

?

def m1 = { 1 + 1     | +1 + 1 }

?

1 楼 guibin 2011-07-11 这难道是BUG吗?

读书人网 >编程

热点推荐