我还在学习SML,所以如果这是一个相当愚蠢的问题我会道歉。我想知道是否有更好的方法在函数之外的一些结构上进行模式匹配。
例如,假设我们有一个类型
type coord = int * int * int
然后我们有一些b
类型的值coord
。我知道我们可以在函数中进行模式匹配,例如:
fun get_x_coord ((x, y, z) : coord) = x
但是,假设我们正在使用b
内部另一个未作为参数给出的函数。我想做什么
case b of
(x,y,z) => (* do stuff *)
如果我有一个我想要的结果,那么相当笨重(例如我知道会有三个整数值而我只想隔离它们。)
有更好的方法吗?
答案 0 :(得分:3)
当然 - 您也可以在val
- 绑定中使用模式匹配,因此您可以执行以下操作:
fun foo (b : coord) =
let val (x, y, z) = b
in (* do stuff *)
end