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吗?