ここで関数型が文字列 -> 文字列であると推測される理由を誰か説明してください。
let myFunc a:string =
match a with
| "A" -> 1
| _ -> 0
これは、引数が汎用の場合は正常に機能しますが、:string を追加するとすぐに型が変わります。なんで?
編集: 実際には一致に String.ToUpper() を使用したいので、引数の型を文字列として宣言したいと思います:
let myFunc a:string =
match a.ToUpper() with
| "A" -> 1
| _ -> 0
少し厄介な解決策は、これです
let myFunc a =
match a.ToString().ToUpper() with
| "A" -> 1
| _ -> 0
しかし、私はそれが文字列になることを本当に知っています