【问题标题】:Is it possible to do pattern matching without case?是否可以在没有大小写的情况下进行模式匹配?
【发布时间】:2014-05-18 22:15:38
【问题描述】:

我仍在学习 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 *)

如果我有一个我想要的结果(例如,我知道会有三个整数值,我只想隔离它们),那就太笨拙了。

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: pattern-matching sml smlnj


    【解决方案1】:

    当然——你也可以在val-bindings 中使用模式匹配,所以你可以这样做:

    fun foo (b : coord) =
      let val (x, y, z) = b
      in (* do stuff *)
      end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多