首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rebol3中评估代码块

在Rebol3中评估代码块
EN

Stack Overflow用户
提问于 2015-02-16 12:20:04
回答 1查看 64关注 0票数 1

我试图通过随机设置起始位置来改进滑动瓷砖难题实例

有一个更好的方法--“将值转换为字符串并将它们连接起来以传递用于计算的操作被认为是错误的做法。”--但是我采用的方法是生成Rebol3源代码,然后评估它。我认为它的生成是正确的:

代码语言:javascript
复制
random/seed now
arr: random collect [ repeat tilenum 9 [ keep tilenum ] ]
hgroup-data: copy {}
repeat pos 9 [
    curtile: (pick arr pos)
    append hgroup-data either curtile = 9
        [ reduce "x: box tilesize gameback " ]
        [ rejoin [ { p "} curtile {" } ] ]
    if all [(pos // 3) = 0 pos != 9] [ append hgroup-data " return^/" ]
]
print hgroup-data

...outputs类似于:

代码语言:javascript
复制
 p "4" x: box tilesize gameback  p "5"  return
 p "3"  p "7"  p "1"  return
 p "2"  p "8"  p "6" 

如果将...which复制并粘贴到此部分,则正确工作:

代码语言:javascript
复制
view/options [
    hgroup [ 
PASTE-HERE
    ]
] [bg-color: gameback]

但是,如果我尝试动态地这样做:

代码语言:javascript
复制
view/options [
    hgroup [ 
        hgroup-data
    ]
] [bg-color: gameback]

.(也是print hgroup-datado hgroup-dataload hgroup-data),我得到了以下错误:

代码语言:javascript
复制
** GUI ERROR: Cannot parse the GUI dialect at: hgroup-data

.(或at: print hgroup-data等,取决于我尝试过的变化)

如果我尝试load [ hgroup-data ],我得到:

代码语言:javascript
复制
** Script error: extend-face does not allow none! for its face argument
** Where: either if forever -apply- apply init-layout make-layout actor all foreach do-actor unless -apply- apply all build-face -apply- apply init-layout make-layout actor all foreach do-actor if build-face -apply- apply init-layout make-layout actor all foreach do-actor unless make-face -apply- apply case view do either either either -apply-
** Near: either all [
    word? act: dial/1
    block? body: get dial...

但是,如果我使用语法hgroup do [ hgroup-data ],程序就会运行,但是没有按钮:它似乎被高估了,因此函数pbox等的返回值作为代码直接放入hgroup中。

当然,我在这里遗漏了一个简单的语法错误。那是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-16 14:33:17

首先,我想说最好直接构造一个块,而不是构造一个字符串并将它转换成一个块。但如果你真的想这么做的话,这应该是个好办法:

代码语言:javascript
复制
view/options compose/only [
    hgroup (load hgroup-data)
] [bg-color: gameback]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28541318

复制
相关文章

相似问题

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