使用Oz扫描列表中的各个数字

时间:2016-09-23 01:13:57

标签: oz mozart

我正在努力学习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]}}

1 个答案:

答案 0 :(得分:2)

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

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。这只是一个开始,现在你可以添加更复杂的子句或使用递归来实现更复杂的其他任务。