- 博客(5)
- 资源 (1)
- 收藏
- 关注
原创 线性化很可怕,结果原来是这样的,尽量少用
abstract class Root { def hello(s: String)}class SubA extends Root { def hello(s: String) { println("Hello,SubA! " + s) }}trait D extends Root { abstract override def hello(s: String) { supe
2012-08-27 17:39:43 2290
原创 trait中super调用动态绑定
class Root{ def hello(){ println("Hello,Root!") } } class SubA extends Root{ override def hello() { println("Hello,SubA!") } } trait D extends Root{ def traitHello(){ super.he
2012-08-27 15:54:54 2324
原创 Nothing是任何类型的子类这个定义非常好。
有Nullable的功能,却比Nullable更方便。其实没有什么实际意义,只是在编码时需要一个能代表任何类型的“东西”,却又是一个“表示无意义的特殊含义”。到少在返回值类型的异常值是不用返回-1,-99,-9999这样硬编码的特殊值来表示一个异常值。
2012-08-27 14:20:06 2117
原创 byName的高阶函数与普通参数的区别
本质的区别就是执行期不同,普通参数的表达式传参时已经开始执行,而byName的高阶函数在方式执行体中按定义顺序执行,有可能被短路。def paramterMethod(b:Boolean){ if(false && b) println("hello")}paramterMetho(5 > 3)在传参时5 > 3一定已经运行,如果改成 1/0==0肯定抛出错误。def funcMetho
2012-08-24 11:23:25 2897
原创 看完scala,发现java中finally允许返回结果真的是一种极其错误的设计。
try{ return x; }catch(Excpeiont e){ return y; } finally{ return z; }这样的代码无论如何都返回z,那么上面的任何return都显得没有意义。所以我们在绝大多数情况下都不会在finally中使用return语句,因为这使得这个方法几乎返回一个恒定的结果。但这并不能保证一个水平很差的程序员在finally中返回结果。我说
2012-08-21 09:36:04 3893
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人