首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OZ编程语言:布尔守卫

OZ编程语言:布尔守卫
EN

Stack Overflow用户
提问于 2011-09-08 01:56:44
回答 1查看 471关注 0票数 0

我在学校选修了一门课程,要求我们使用莫扎特编程接口。到目前为止,我真的没怎么想过这件事。但不管怎样,问题是:

在OZ中,一个变量只能赋值一次(它不能被重新赋值,但可以在当前作用域中重新声明,如果我是对的?)。我遇到了一个问题,我想使用布尔守卫,但OZ不让我这样做。我得到了电流:

代码语言:javascript
复制
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

有没有人知道该怎么做?耽误您时间,实在对不起。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-08 02:26:08

有很多方法可以做到这一点。

最简单的方法是在创建浏览器对象后立即设置它。不需要守卫。

如果您想使用可变变量,请查看单元格。例如:

代码语言:javascript
复制
BrowserSetup = {NewCell false}
...
if @BrowserSetup == false ...
BrowserSetup := true

但是,这不是线程安全的,也就是说,如果您从多个线程使用Browse过程,这将是一个问题。

最好的方法可能是对BrowserObject使用延迟初始化,即只在第一次使用它时创建和初始化它。如果你想使用它,请查看"Value.byNeed“的文档。

我建议给这门语言一个机会。它与大多数语言有很大的不同,你可能永远不会“在现实世界中”使用它。但还有很多东西需要学习,越来越多的研究性语言的概念进入了主流语言。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7338355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档