F#:(#...#)表示法是什么意思?

时间:2016-04-25 15:14:01

标签: f#

例如,Github上prim-types.fs中的unary negative operator implementation

[<NoDynamicInvocation>]
let inline (~-) (x: ^T) : ^T = 
    (^T : (static member (~-) : ^T -> ^T) (x))
     when ^T : int32     = (# "neg" x  : int32 #)
     when ^T : float     = (# "neg" x  : float #)
     when ^T : float32   = (# "neg" x  : float32 #)
     when ^T : int64     = (# "neg" x  : int64 #)
     when ^T : int16     = (# "neg" x  : int16 #)
     when ^T : nativeint = (# "neg" x  : nativeint #)
     when ^T : sbyte     = (# "neg" x  : sbyte #)
     when ^T : decimal   = (# "" (System.Decimal.op_UnaryNegation((# "" x : decimal #))) : ^T #)

0 个答案:

没有答案