当前位置:  开发笔记 > 编程语言 > 正文

F#3.1:为什么我不能使用具有显式通用成员方法的管道运算符?

如何解决《F#3.1:为什么我不能使用具有显式通用成员方法的管道运算符?》经验,为你挑选了0个好方法。

给出以下代码:

type MyDU =
| B of bool
| I of int
| S of string

type Ops () =
    static member myFn<'T> x =
        let v =
            match x with
            | B b -> box b
            | I i -> box i
            | S s -> box s

        match v with
        | :? 'T as y -> Some y
        | _ -> None

......以下产品error FS0717: Unexpected type arguments:

I 7 |> Ops.myFn

Ops.myFn <| I 7

但是,这很好用:

Ops.myFn (I 7)

另外,如果我myFn在模块中定义,我没有错误:

let myFn<'T> x =
    let v =
        match x with
        | B b -> box b
        | I i -> box i
        | S s -> box s

    match v with
    | :? 'T as y -> Some y
    | _ -> None

I 7 |> myFn  // Works fine

说明?

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有