1
假设:扩展方法定义/调用在F#
存在着类型行和细胞在外部组件限定。
问题:
我已经创建了一个扩展方法为行类型:
module XlRow =
type Row with
member this.xlNewCell (row : Row) =
let cell = Cell()
//Manipulate cell...
cell
此编译没有问题,据报道,有预期的签名
row:Row -> Cell
而且然而,当我试图调用这样的方法时,
let row = Row()
let cell = row.xlNewCell()
编译器报告错误“类型'单元'与'行'类型不兼容。在另一方面,下面的语法成功,并且在执行时产生预期的新小区:
let row = Row()
let cell = row.xlNewCell(row)
这是因为如果编译器没有看到“隐this指针”与扩展方法一起去;但它似乎被认为是某种“扩展方法”,因为我可以用''来称呼它。符号。这里发生了什么?
是啊,我已经在C#中思考这么久,我完全错过了。感谢您帮助我解决它。 – 3Sphere