为什么这个静态类型的成员访问认为它是一个getter?
Why does this statically typed member access think it is a getter?
rvm
是对象,不是函数。
为什么约束 (^b:(member ReportSubTitle:(String -> unit)) rvm )
出现为 getter 而不是 setter?这是工具提示问题还是其他问题?
在我使用静态类型泛型的其他任何地方,我发现我什至不必告诉它类型。这也不起作用:
// Setup the sub title with the total
let subTitleSetter = (^b:(member ReportSubTitle:_) rvm )
subTitleSetter ("Total: " + total.ToString("C") )
将此尝试移到函数中并尝试@kvb 建议的方法
这是 scope/method
中 rvm
的唯一用途
我不完全确定通过静态成员约束调用 setter 的正确方法是什么。我总是发现该功能的边缘有点粗糙,并且更喜欢在可能的情况下使用其他选项(即定义接口并通过接口访问成员)。
也就是说,看起来您可以在约束中使用 set_PropertyName
。以下小示例对我来说效果很好:
type A() =
member val Foo = 0 with get, set
let a = A()
let setter v = (^b:(member set_Foo : int -> unit) (a, v) )
setter 42
a.Foo
rvm
是对象,不是函数。
为什么约束 (^b:(member ReportSubTitle:(String -> unit)) rvm )
出现为 getter 而不是 setter?这是工具提示问题还是其他问题?
在我使用静态类型泛型的其他任何地方,我发现我什至不必告诉它类型。这也不起作用:
// Setup the sub title with the total
let subTitleSetter = (^b:(member ReportSubTitle:_) rvm )
subTitleSetter ("Total: " + total.ToString("C") )
将此尝试移到函数中并尝试@kvb 建议的方法
这是 scope/method
中rvm
的唯一用途
我不完全确定通过静态成员约束调用 setter 的正确方法是什么。我总是发现该功能的边缘有点粗糙,并且更喜欢在可能的情况下使用其他选项(即定义接口并通过接口访问成员)。
也就是说,看起来您可以在约束中使用 set_PropertyName
。以下小示例对我来说效果很好:
type A() =
member val Foo = 0 with get, set
let a = A()
let setter v = (^b:(member set_Foo : int -> unit) (a, v) )
setter 42
a.Foo