我想交换 oz 列表中的项目。
所以假设我有 L = [1 2 3],我希望它是 L = [1 4 3]。
一个人会怎么做呢?我懂了
{List.member X +Ys ?B}
以及https://mozart.github.io/mozart-v1/doc-1.4.0/base/list.html上的其他各种可能的功能
但我并不真正理解这些表达式的语法。我对奥兹很陌生。
我想交换 oz 列表中的项目。
所以假设我有 L = [1 2 3],我希望它是 L = [1 4 3]。
一个人会怎么做呢?我懂了
{List.member X +Ys ?B}
以及https://mozart.github.io/mozart-v1/doc-1.4.0/base/list.html上的其他各种可能的功能
但我并不真正理解这些表达式的语法。我对奥兹很陌生。
如果您想交换编号为 N 的特定元素,您可以遍历列表直到找到它,然后替换它并保留列表的其余部分。这就像
declare
fun {Swap Xs N Y}
case Xs of nil then nil % There is no Nth element, the list doesn't change
[] X|Xr then
if N==1 then Y|Xr % Replace _ with Y and append the rest
else X|{Swap Xr N-1 Y} end % Continue to iterate through the list, but keep the previous elements of the list
end
end
你也可以在里面使用一个辅助函数,Swap
这样你就不必在每次递归调用时都传递 Y,但我不想用细节来打扰你,因为你是初学者。