使用 Oz 扫描列表中的单个数字
Scan through individual numbers in a list with Oz
我正在努力学习 Oz,但是除了官方文档之外,在线资源很少,我真的很难找到如何扫描列表以创建工作分区函数的方法。在这个例子中,我只是试图 return 列表的第一个数字。我该怎么做?
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]}}
您可以使用模式匹配,作为第二个 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
。这只是开始,现在您可以添加更复杂的子句或使用递归来实现其他更复杂的任务。
我正在努力学习 Oz,但是除了官方文档之外,在线资源很少,我真的很难找到如何扫描列表以创建工作分区函数的方法。在这个例子中,我只是试图 return 列表的第一个数字。我该怎么做?
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]}}
您可以使用模式匹配,作为第二个 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
。这只是开始,现在您可以添加更复杂的子句或使用递归来实现其他更复杂的任务。