【发布时间】:2021-02-21 02:57:20
【问题描述】:
只是好奇为什么我不能这样做:
let myFn (data : obj) =
match data with
| :? (string * string) as (s1, s2) -> sprintf "(%s, %s)" s1 s2 |> Some
| :? (string * string * int) as (s1, s2, i) -> sprintf "(%s, %s, %d)" s1 s2 i |> Some
| _ -> None
怎么会?
【问题讨论】:
-
那太好了。可惜不支持。
-
虽然这可以在 github.com/fsharp/fslang-suggestions 中提出建议,但我认为这是一个坏主意,因为它会鼓励人们编写这样的代码。应避免使用此代码,因为它需要使用
obj和类型匹配。 F# 应该以类型安全的方式使用,而使用obj和向下转换会减损这一点。
标签: f# tuples pattern-matching decomposition