如何更改Oz列表中的元素?

时间:2014-10-04 16:30:15

标签: oz

我想用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

上的其他各种可能的功能

但我真的不明白这些表达式的语法。我对奥兹很新。

1 个答案:

答案 0 :(得分:0)

如果要交换编号为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,但我不想打扰您,因为您是初学者。< / p>