让我说我有一个列表包含和int *列表列表我如何能够从这种类型的列表中提取int的值?您可以对列表的头部或尾部进行模式匹配,但是如何提取int?
你总是可以连续做两个模式匹配
match [[1;2]; [3;4]] with | (firstrow::_) -> ( match firstrow with -> | (x :: _) -> x | [] -> 0 ) | _ -> 42
也可以用多个级别编写模式匹配 .
match [[1;2]; [3;4]] with | (x::_)::_ -> x | ([]::_) -> 0 | _ -> 42
也就是说,您不一定需要使用模式匹配来访问列表元素 . 您还可以使用List.map或许多其他列表操作函数之一,具体取决于您实际尝试的操作 .
我不想说你要提取 int list list 中的所有整数并且不想用多个级别编写模式匹配,你可以先使用 List.flatten 函数来获取 int list 然后按你想做的去做:
int list list
List.flatten
int list
let l = List.flatten [[1; 2]; [3; 4]] in (* l = [1; 2; 3; 4] *) List.iter print_int l (* iter, map or any other function *)
如果您将列表列表视为矩阵,并且您拥有所需的行列
List.nth col (List.nth ln matrix)
List.nth 在这种情况下很好用,你得到的信息我认为这就是你想要的
List.nth
3 回答
你总是可以连续做两个模式匹配
也可以用多个级别编写模式匹配 .
也就是说,您不一定需要使用模式匹配来访问列表元素 . 您还可以使用List.map或许多其他列表操作函数之一,具体取决于您实际尝试的操作 .
我不想说你要提取
int list list
中的所有整数并且不想用多个级别编写模式匹配,你可以先使用List.flatten
函数来获取int list
然后按你想做的去做:如果您将列表列表视为矩阵,并且您拥有所需的行列
List.nth col (List.nth ln matrix)
List.nth
在这种情况下很好用,你得到的信息我认为这就是你想要的