设计模式 – Scala程序员 – “应该有一个明显的方法吗”或“多
我一直在做Java很长时间,大概在6个月前开始Scala.我喜欢这种语言我发现有一件事是有多种方法来做事情.我不知道是因为语言的本质,还是因为它还是年轻而不断演变,成语和最佳做法还没有出现.
令我惊讶的是,我一直都是一个蟒蛇在perl的人:
比我更有意义
我有兴趣知道你认为Scala适合这个规模,为什么? 报价:Python PEP20和Perl quote 解决方法
我对Scala的经验是,有不止一种做事的方式,但相对较少的“最好”的做法.图书馆以不同的方式做很多无偿的选择;当这样做时,通常会在一小部分案例中实现额外的表现力或紧凑性或效率.
例如,如果要求一个整数数组,您可能完全是程序性的,它会生成一个尽可能快的代码,而不是一点点笨重 – 但如果这是一个非常时间紧迫的代码,这是解决问题的唯一最佳方法: val array = Array(1,2,3,4,5) var sum = 0 var index = 0 while (index < array.length) { sum += array(index) index += 1 } sum 同样一般的功能方法在使用原语时速度较慢(这可能会在2.8中更改为@specialized),但是您可以减少乏味: var sum = 0 Array(1,5).foreach(x => sum += x) sum 然后,只有这种问题(因为它出现了很多)而设计的一般功能结构略少,如果你想要干净,紧凑的代码,这是“最好的”: Array(1,5).reduceLeft( _ + _ ) 有时候,有非常非常一般的结构来做你想做的事情.在Scala 2.8中,例如: Array(1,5).sum 所以你得到一个连续的选择,在一般权力,紧凑性,清晰度和速度的权衡.如果您可以假设代码只需要对熟悉Scala的人员可以访问,并且您知道您是否需要绝对最佳的性能,那么很好的选择通常是相当有限的.但是,由于语言和图书馆的表现力,通常有很多可能的,如果不是最好的方式做事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |