如何在 Oz 中创建列表?

Posted

技术标签:

【中文标题】如何在 Oz 中创建列表?【英文标题】:How do I create a list in Oz? 【发布时间】:2010-11-30 14:41:14 【问题描述】:

我正在尝试使用以下代码在Oz 中创建一个列表:

local Loop10 Xs in
   proc Loop10 I
      Xs=List.append Xs I
      if I == 10 then skip
      else
     Browse I
     Loop10 I+1
      end
      Browse Xs
   end
Loop10 0
end

Mozart compiler 表明代码已被接受,但没有打开浏览窗口。我要做的就是在 Oz 中创建一个列表。

代码有什么问题?

【问题讨论】:

【参考方案1】:

不确定这是否是您想要的,但要创建一个包含 X 和 Y(含)之间所有整数的列表,您可以这样做:

local
   fun Loop From To
      if From > To
      then nil
      else From | Loop From+1 To
      end
   end
in
   Browse Loop 0 10 % Displays: [0,1,2,3,4,5,6,7,8,9,10]
end

【讨论】:

谢谢。实际上,我自己也偶然发现了同样的方法。尽管为了返回正确的列表, Loop 的第二个参数必须为 To|nil,以便列表始终以 nil 终止。谢谢。 在我看来,if From < To then nil 更安全、更合乎逻辑,因为你可以给一个小于“From”的“To”并得到 nil(而不是像上面程序中那样的无限列表) @yakoudbz 好点(除了应该是>,而不是<)。完成。【参考方案2】:

另外你没有看到任何浏览器窗口的原因是评估线程由于这一行而暂停:

Xs=List.append Xs I

正如前面提到的,一个变量只能被赋值一次,但这一行还有其他问题。 您尝试将 Xs 附加到 I 但 Xs 仍然未绑定。线程因此暂停,直到为Xs 分配了一个值。

以交互方式输入:

declare Xs in
Browse List.append Xs [2 3 4]

当您看到没有任何反应时,没有打开浏览器。现在输入:

Xs= [1]

由于Xs 被绑定,它会解锁第一个评估“线程”并且会弹出浏览器。

附:抱歉回答晚了,我只是对 Oz 感兴趣:P

【讨论】:

当我将 List.append 替换为 Append 时,这有效

以上是关于如何在 Oz 中创建列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中创建嵌套列表

如何使用 React js JSX 在下拉列表中创建年份列表

如何在 python 中创建列表? [复制]

如何在 DolphinDB 中创建月份列表?

如何在 Oracle Apex 中创建包含文件的列表

如何在 Java 中创建列表列表并添加任何类型的列表? [复制]