问题标签 [structural-equality]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
90 浏览

c# - `System.Exception` 的派生类在结构上是否等同于 `System.Exception`?

我在看

的所有(或在大多数情况下)派生类System.Exception,无论是用户定义的还是系统定义的,在结构上都与它们的基类等价System.Exception,尽管它们在名义上不是等价的,这是否正确?

谢谢。

0 投票
2 回答
281 浏览

java - 为什么 Kotlin 使用 == 表示结构相等并引入 === 表示引用相等

总的来说,Kotlin 中的每个设计决策都让人感觉它本身就很棒,并且提供了从 Java 的良好过渡。作为一名 Java 开发人员,您可以开始在其中进行编码,将 Kotlin 视为一种更简洁的 Java,更少样板,然后顺利地进入更高级的方面,如函数式编程。

然而,我想知道的一件事是为什么它的设计者决定使其==行为相同equals,然后引入===参照相等检查。我可以想象尝试让其他 Java 开发人员参与进来,让他们看到您的 Kotlin 代码并想“哦,不,到处都有引用检查,它应该是一个相等的调用!”

在这里摆脱 Java 约定的思考过程是什么?为了清楚起见,我完全理解Kotlin 中==orequals和之间的区别===,我只是想知道为什么。

0 投票
1 回答
488 浏览

f# - F# 记录结构比较排序

如果我有这样的记录:

我知道 F# 的结构比较将确保在对列表进行排序时,它将保持一致的顺序。

我的问题是我是否可以依靠它以特定的方式进行比较,那是什么?

例如MyDate上面的记录:如果它按照声明的顺序比较每个字段,那么我可以假设以下内容: { Year: 2010; Month: 9: Day: 8 } > { Year: 2009; Month: 10; Day: 20 }

我一直在努力寻找描述 Record 类型的结构相等性如何工作的文档。我可以从 Fsharp.Core 测试中看到元组比较是如何工作的:https ://github.com/fsharp/fsharp/blob/cb6cb5c410f537c81cf26825657ef3bb29a7e952/tests/fsharp/core/attributes/test.fsx#L737 ,但我似乎看不到为记录类型找到类似的测试。

0 投票
1 回答
52 浏览

typescript - TypeScript generics: how to define type T which is structurally the same as other type S

I have a notion of a Step, which requires value of type A as an input and gives out a value of type B.

Now I would like to compose two steps, so I end up with something like this inside class Step:

What I would like to achieve is to somehow tell the type system that we can pass type B to a function which expects type C (structural typing should check that all fields in C are present in B), so that the line return nextStep.run(b) works fine.

Example:

As you can see stepB requires as an input {a: number}, so it can be fed an output from stepA which is {a: number, b: string}. But I cannot figure out how to define the relation in andThen. Any thoughts how this can be achieved?

0 投票
2 回答
319 浏览

kotlin - 当属性之一是函数时 Kotlin 数据类相等

我想知道具有其中一个属性的数据类是否是函数,例如:

完全可以工作,因为以下测试失败。

更新:用例可能是有一个

然后在做的时候把它流到 UIdistinctUntilChanged()