0

我正在努力学习 Oz,但是除了官方文档之外几乎没有在线资源,我真的很难找出如何扫描列表以创建工作分区函数。在这个例子中,我只是试图返回列表的第一个数字。我该怎么做?

declare

fun {Partition ?X}
   case X of nil then nil
   else
      {Show "HELLO!"}
      RETURN FIRST DIGIT OF X HERE?
   end
end

in
{Show {Partition [5 1 7 3 4 6 5]}}
4

1 回答 1

2

您可以使用模式匹配,作为第二个 case 子句:

case X of nil then nil
[] A|B then A    
end

X在这种情况下,等于 [5 1 7 3 4 6 5],唯一的匹配子句是第二个,最简单的方法是将 5 分配给A,将 [1 7 3 4 6 5] 分配给B。这只是开始,现在您可以添加更复杂的子句或使用递归来完成其他更复杂的任务。

于 2016-10-04T16:52:46.150 回答