考虑以下两种类型:
data Point=Point{x::Float,y::Float}
data Rectangle = {upperLeft::Point, bottomRight::Point}
data Square = {upperLeft::Point, bottomRight::Point}
Run Code Online (Sandbox Code Playgroud)
ghc编译器抱怨Rectangle中的upperLeft字段名称与Square的字段名称冲突.这看起来很奇怪,因为从表面上看,每个字段名称都应该在该类型的命名空间中,否则一个人不能重用字段名称,我怀疑这将是一个足够普遍的期望.
例如,要定义我们编写的变量:
let a=Rectangle{upperLeft=Point 2 3, bottomRight=Point 7 7}
let a=Square{upperLeft=Point 2 3, bottomRight=Point 7 7}
Run Code Online (Sandbox Code Playgroud)
由此我们可以看出,我们应该能够期望每个字段名称应该在它们各自的类型名称空间内.
我的用法是正确的还是我的期望错了?有没有办法解决这个问题?
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |