Rebol 如何绑定到foreach上下文?

Rebol 如何绑定到foreach上下文?,rebol,Rebol,目前我有以下代码片段: Blocks: ["F4369RO771" "282273" "5" "146" "126" "6-Nov-2009" "8-Jan-2010" "7-Jun-2010" "8" "M9881KI923" "399727" "2" "359" "443" "5-Aug-2010" "23-Feb-2010" "6-Nov-2009" "4" ] save-blocks: func[file /local f out][ foreach [field1 f

目前我有以下代码片段:

    Blocks: ["F4369RO771" "282273" "5" "146" "126" "6-Nov-2009" "8-Jan-2010" "7-Jun-2010" "8"
"M9881KI923" "399727" "2" "359" "443" "5-Aug-2010" "23-Feb-2010" "6-Nov-2009" "4"
]

save-blocks: func[file /local f out][
    foreach [field1 field2 field3 field4 field5 field6 field7 field8 field9] blocks [

out: copy ""
repeat n 9 [
  part: get bind to-word rejoin ["field" n] 'field1 
  out: rejoin [out part ";"]
]
        remove back tail out
        write/lines/append f out


]
它不够通用,我想通过这个

block: [field1 field2 field3 field4 field5 field6 field7 field8 field9]
作为参数,并编写如下内容:

save-blocks: func[block file /local f out][
    foreach block blocks [

out: copy ""
repeat n length? block [
  part: get bind to-word rejoin ["field" n] 'field1 
  out: rejoin [out part ";"]
]
        remove back tail out
        write/lines/append f out


]
但是我不知道如何在这种情况下绑定,这对我来说太难了:(

(目前,不管你在这里做的是不是一个好主意。)

请记住,当您将
块!
传递给
foreach
时,它将在循环期间绑定该块内的单词:

>> foreach [foo bar] ["a" "b"] [print foo print bar]
a
b
当您传递任何类型的
单词!
时,它将被完全覆盖,并且不会分配任何变量(无论该单词以前是否绑定到块!):

要获得您在这里想要的效果,您需要以下内容:

>> foreach :foobarblock ["a" "b"] [print foo print bar]
a
b

然后,你的行为将是你所期望的,词语将与当地上下文相关联。

非常感谢你真的很和蔼,因为你的大脑很差,只想把事情做好:)如果你不忽视我正在努力做的事情,它只是与我想允许用户为他们的规范指定任意数量的字段有关,这样他们就不必每次都修改save函数。如果有更优雅的方式,我当然很乐意学习:在你问的另一个问题中,我不清楚你用这种惯用的方式将一个块传递给foreach,这样做有什么价值。只需传递一个普通的字,它将分配记录的值,包括多少个字段…然后有一个内部循环来遍历它。看到了吗
>> foreach :foobarblock ["a" "b"] [print foo print bar]
a
b