F# SRTP可以使用内部成员吗?
我知道F# SRTP可以使用内部成员吗?,f#,inline,F#,Inline,我知道内联代码的实现不能使用内部/私有代码。然而,令我惊讶的是,我甚至不能使用SRTP(静态解析类型参数)将内部类型传递给内联函数 考虑这一点: type internal A = { A: int } let inline f (x: ^a) = (^a: (member A: _) x) let a = { A = 0 } let x = f a 最后一个a,由于编译错误而失败: 从A的定义中删除internal可以修复错误 这是故意的吗?除了复制到匿名记录(例如,将A替换为{
内联代码的实现不能使用内部/私有代码。然而,令我惊讶的是,我甚至不能使用SRTP(静态解析类型参数)将内部类型传递给内联函数
考虑这一点:
type internal A = { A: int }
let inline f (x: ^a) =
(^a: (member A: _) x)
let a = { A = 0 }
let x = f a
最后一个a
,由于编译错误而失败:
从A
的定义中删除internal
可以修复错误
这是故意的吗?除了复制到匿名记录(例如,将A
替换为{| A替换为{uuuu=()|}
),还有什么方法可以在保持A
内部的同时实现此功能