Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 如何访问元组中的项,该元组是一个有区别的联合?_F# - Fatal编程技术网

F# 如何访问元组中的项,该元组是一个有区别的联合?

F# 如何访问元组中的项,该元组是一个有区别的联合?,f#,F#,假设我这样声明一个类型: type Kvp = Kvp of string * int 我创建了一个实例 let inst = Kvp("twelve", 12) 如何从inst获取第一个和第二个值?Fst和snd不起作用: fst inst;; stdin(81,5): error FS0001: This expression was expected to have type 'a * 'b but here has type Kvp 因为DU不是元组,所以会出现错误

假设我这样声明一个类型:

type Kvp = Kvp of string * int
我创建了一个实例

let inst = Kvp("twelve", 12)
如何从inst获取第一个和第二个值?Fst和snd不起作用:

fst inst;;
stdin(81,5): error FS0001: This expression was expected to have type
    'a * 'b
but here has type
    Kvp

因为DU不是元组,所以会出现错误。但您可以在DU上进行模式匹配:

type Kvp = Kvp of string * int
let inst = Kvp("twelve", 12)

let (a,b) = 
    match inst with
    | Kvp(a,b) -> (a,b)
//val b : int = 12
//val a : string = "twelve"

和中间的某个地方有匹配函数的例子。 如s952163所述,模式匹配是您想要的。然而,好的语法是

type Kvp = Kvp of string * int
let inst = Kvp("twelve", 12)

let (Kvp (str,i)) = inst 
// val str : string = "twelve"
// val i : int = 12
您还可以使用
\uuu
放弃您不想要的内容:

let (Kvp (str,_)) = inst

顺便说一句,我不确定您想做什么,但有一个内置的键值对活动模式:和