在 F# 函数签名中,# 符号代表什么意思?

13

我看到一个定义为这样的函数:

let private applyTarget (logger:#ILogger) ceiling target =
    logger.Debug "enforce ceiling"
    match target > ceiling with
    | true -> ceiling | false -> target

在签名中,符号#代表什么意思?

logger:ILoggerlogger:#ILogger有什么区别?


1
我认为这是一种灵活的类型注释。我怀疑在F#中向上转型不总是隐式的,因此使用灵活的类型不强制调用者进行向上转型是有意义的。 - Mike Zboray
1个回答

18

类型签名#t被称为"灵活类型",只是'a when 'a :> t的简写。

也就是说,#t意味着"任何t的子类型"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接