2017-07-14 10 views
5

言うこと、私はこれのようなものを持っています。それはコンパイルされませんが、私は何をしようとしているのか見ることができます。私はあらゆる方法でGoogleに挑戦しましたが、ダイスはありませんでした。これはできますか?静的に解決された型パラメータの型を取得できますか?

let inline read (s:string) : ^x = 
    let parsed = (^x : (static member ofString: string -> ^x option) (s)) 

    // this is the bit I'm not sure how do to. This doesn't compile. 
    // I'm trying to determine what the statically chosen type for ^x is. 
    let t = typeof<^x> 

    match parsed with 
    | Some y -> y 
    | None -> failwithf "can't parse %s into %s" s (t.Name) 

答えて

9

これは正常に動作し、あなたは静的に解決パラメータにtypeofを使用することができます - それはまた、オペレーターとして解析することができますので、問題は、パーサが<^を扱うことができないということです。

あなただけ^xの前後にスペースを追加することで簡単にこの問題を解決することができます

let t = typeof<^x> 
+2

おやおや男、これは気のめいるです!私は空きスペースが必要であることを知るために、私は研究のために十分な時間を取ってから、stackoverflowをやりました! – Daniel

関連する問題