将字符串块转换为红色块

时间:2016-09-29 12:35:53

标签: red

如何将字符串块转换为块?

要改变这一点:

keep rejoin['circle " " coord " " 5 " "]]]

["circle 10x10 5 " "circle 20x20 5 " "circle 30x30 5 "]

到此:

[circle 10x10 5 circle 20x20 5 circle 30x30 5]

我想更改它,以便它可以与VID一起使用。

view [
      size 800x600
      base 780x580
      draw drawblock
     ]

谢谢!

2 个答案:

答案 0 :(得分:2)

要将string!转换为红色代码,您需要加载它: red>> load "circle 10x10 5 " == [circle 10x10 5]

因此,对于string!的块,只需将它们加载到循环中: collect [ foreach arg ["circle 10x10 5 " "circle 20x20 5 " "circle 30x30 5 "] [ keep load arg ] ] == [circle 10x10 5 circle 20x20 5 circle 30x30 5]

但是,对于代码生成,最好直接使用Red类型而不是以字符串开头。

答案 1 :(得分:2)

您还可以使用load rejoin转换["set " "of " "spaced " "strings"]

red>> load rejoin ["circle 10x10 5 " "circle 20x20 5 " "circle 30x30 5 "]
== [circle 10x10 5 circle 20x20 5 circle 30x30 5]

最好的办法是首先没有字符串块,尽量使用文字和代码。

编辑:

对于您的特定用例,这将起作用:

drawblock: collect [
    foreach arg [10 20 30] [
        keep compose [circle (as-pair arg arg) 5]
    ]
]

p.s。如果您正在玩视图this gist可以提供帮助