如何将字符串块转换为块?
要改变这一点:
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
]
谢谢!
答案 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可以提供帮助