我在学校选修了一门课程,要求我们使用莫扎特编程接口。到目前为止,我真的没怎么想过这件事。但不管怎样,问题是:
在OZ中,一个变量只能赋值一次(它不能被重新赋值,但可以在当前作用域中重新声明,如果我是对的?)。我遇到了一个问题,我想使用布尔守卫,但OZ不让我这样做。我得到了电流:
declare
BrowserObject = {New Browser.'class' init}
BrowserSetup = false
proc {Browse Bs}
if BrowserSetup == false then
{BrowserObject option(representation strings:true)}
{BrowserObject option(representation virtualStrings:true)}
BrowserSetup = true
end
{BrowserObject browse(Bs)}
end有没有人知道该怎么做?耽误您时间,实在对不起。
发布于 2011-09-08 02:26:08
有很多方法可以做到这一点。
最简单的方法是在创建浏览器对象后立即设置它。不需要守卫。
如果您想使用可变变量,请查看单元格。例如:
BrowserSetup = {NewCell false}
...
if @BrowserSetup == false ...
BrowserSetup := true但是,这不是线程安全的,也就是说,如果您从多个线程使用Browse过程,这将是一个问题。
最好的方法可能是对BrowserObject使用延迟初始化,即只在第一次使用它时创建和初始化它。如果你想使用它,请查看"Value.byNeed“的文档。
我建议给这门语言一个机会。它与大多数语言有很大的不同,你可能永远不会“在现实世界中”使用它。但还有很多东西需要学习,越来越多的研究性语言的概念进入了主流语言。
https://stackoverflow.com/questions/7338355
复制相似问题