是否可以在 rebol 或 red 中动态生成函数
Is it possible to generate function dynamically in rebol or red
而不是硬编码(这里是人为的例子):
f1: func[][print "f1"]
f100: func[][print "f100"]
etc...
是否可以做这样的事情
for num 1 100 1 [
set to-word rejoin ["f" num] func[][
print rejoin ["f" num]
]
]
除了它不起作用,它总是给出 "f100"(为什么实际上 num 等于 100 对我来说是个谜,虽然这不是这里的问题:闭包?)。
for num 1 100 1 [
set to-word rejoin ["f" num] func[] compose/deep [
print rejoin ["f" (num)]
]
]
>> f1
f1
>> f2
f2
>> f99
f99
您的函数的结果始终是 f100,因为它们都与您的 for 循环的结果共享同一个词 num。你可以看到,如果你这样做,例如 source f1
.
而不是硬编码(这里是人为的例子):
f1: func[][print "f1"]
f100: func[][print "f100"]
etc...
是否可以做这样的事情
for num 1 100 1 [
set to-word rejoin ["f" num] func[][
print rejoin ["f" num]
]
]
除了它不起作用,它总是给出 "f100"(为什么实际上 num 等于 100 对我来说是个谜,虽然这不是这里的问题:闭包?)。
for num 1 100 1 [
set to-word rejoin ["f" num] func[] compose/deep [
print rejoin ["f" (num)]
]
]
>> f1
f1
>> f2
f2
>> f99
f99
您的函数的结果始终是 f100,因为它们都与您的 for 循环的结果共享同一个词 num。你可以看到,如果你这样做,例如 source f1
.