soc*_*soc 2 c# scala class equals anonymous-types
考虑以下代码:
val a = new { val x = 1; val y = 2 }
val b = new { val x = 1; val y = 2 }
a == b // false
Run Code Online (Sandbox Code Playgroud)
如果字段/方法/值相同,那么如果匿名类定义了一些会返回true的相等,那么这不是明智的吗?
我想这也可以减少Scala在某些用例中必须生成的类文件的数量.
(据我所知,如果匿名类型的C#在相同的顺序中具有相同的值,则它们使用相同的类,并且true当它们相互比较时返回.)
Phi*_*ter 11
因为在所有情况下都很难做正确的事情.
通常,在OO语言中,相等性仅在同一类的实例之间有意义.当您按照问题的方式使用匿名类时,实际上有两个不同的类看起来相同.
考虑(伪代码):
class Point {
int x;
int y;
}
class Dimensions {
int x;
int y;
}
class Rectangle {
Point lowerLeftCorner;
Dimensions dimensions;
}
Run Code Online (Sandbox Code Playgroud)
这里的Point永远不应该与Dimensions相等,即使它们具有相同的x和y值.但是具有相同x和y值的两个点应该相等.
在您的示例中,如果您希望两个不同的匿名类具有相同的含义,那么该语言如何神奇地知道?它们在概念上可以是两个点,或点和维度.
(我不同意C#的系统更好:首先,它不知道你的匿名类是可以比较的;第二,我真的不明白为什么顺序应该影响事物.在所有其他情况下,顺序班级的字段无关紧要;为什么这里要重要?)
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |