首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

scala代码一个蛋痛的bug

2012-11-12 
scala代码一个蛋疼的bugscala object Test {| def m1 1 + 1| +1 + 1|| def m2 1 + 1 +| 1 + 1| }defi

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

热点排行