|
28
|
| Mike Spross Alex Martelli · 技术社区 · 17 年前 |
|
1
39
简单的回答是,正确的关联性可以通过使程序员的类型与程序的实际操作保持一致来提高可读性。
这两者都是:
(提示,摘自本书)
Programming in Scala
)
对于列表,它扮演附加操作的角色(列表似乎附加在要形成的“1”之后)
注意:但是,无论运算符具有何种关联性,其操作数都是
始终从左到右计算。
在此块中,a仍在b之前进行评估,然后是此评估的结果 作为操作数传递给bs:::方法。
它允许保持通常的左关联操作的外观
要包含您的一些评论,请稍作修改:
如果你考虑一个“追加”函数,左关联,那么你会写
这意味着
如果“::”是前置的,但仍保持左关联,则结果列表的顺序将错误。
因此,正确的关联性使代码与返回值的实际顺序匹配。 |
|
|
2
3
我认为正确的关联方法的目的是给某人一个扩展语言的机会,这通常是操作符重写的目的。
运算符重载是一件有用的事情,所以Scala说:为什么不将其开放给任何符号组合呢?相反,为什么要区分运算符和方法?现在,库实现者如何与内置类型交互,如
正确的关联性提供了一种干净的添加方法
我认为这反映了Scala的理念,即在库中实现尽可能多的东西,并使语言灵活地支持它们。这使某人有机会提出超级列表,可以称之为:
有点不幸的是,正确的关联性目前只硬编码到结尾的冒号,但我想这使它很容易记住。 |
|
|
3
3
这个很好用。但不能使用foldLeft操作执行相同的操作
,因为
|