是否可以在rebol或red中动态生成函数

时间:2017-10-28 11:53:38

标签: code-generation rebol 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对我来说是一个谜,虽然这不是问题:闭包?)。

1 个答案:

答案 0 :(得分:1)

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