|
|
1
10
我不喜欢C++ const逻辑,它是关于引用而不是引用的对象。如果我有一个“const T*”,就不能保证持有非const指针的人不会修改对象的状态。因此,它不能以任何方式帮助避免多线程系统中的竞争条件,也不能帮助实现持久容器。 在我看来,有一个不可变类的概念是非常有帮助的,而在标准库中缺少不可变容器在任何语言中都是错误的。由于这些应该表现出可观察的不变性,但出于效率原因,可能需要能够更改内部/不可见状态,因此我认为const语法没有什么帮助。
|
|
2
6
因为C++在复杂系统中不是很好。
Const只是编译器读取的文档。文档通常是有用的,但有时是误导性的。 聚合是const经常崩溃的地方。例如,我经常想声明一个方法不会改变向量,但是可以改变它的一个成员(或者返回一个非常量成员引用)。我必须使所有的const或所有的nonconst或发明新的类型变化为每一个组合。
|
|
|
3
5
在我看来,Scala只是提供了更大的灵活性,不会混淆引用的不变性和它背后结构的[可能]易变性,使您能够针对所处理的问题做出设计决策。 |
|
4
3
所有的Scala代码都被翻译成Java代码,这就是我为什么用Java做例子的原因。 以下是如何在Java中执行此操作:
. 如果您仍要修改常量集合,则需要复制并修改它。 来源:链接
资料来源: Java equivalents - const
因此,Scala的等效值为:
这应该转化为:
这也许可以解释我对IttayD评论的反应,为什么java 6不同于c++编译器:
资料来源: link
资料来源: link
资料来源: Scala Collection API
|