在此代码段,fields-types
到底由to-camel-case
功能改性,相对于作为一个局部变量来父功能被传递:为什么局部变量变量不受尊重?
fields-types: ["First Name" "string" "Last Name" "string" "Age" "int"]
to-camel-case: function [name] [
name/1: lowercase name/1
replace/all name space ""
]
fill-template-body: func [
field-labels-types [block!] /local vars fields-names-types
] [
vars: [member-name member-type]
field-names-types: copy []
foreach [field-label field-type] field-labels-types [
append field-names-types to-camel-case field-label
append field-names-types field-type
]
]
fill-template-body fields-types
执行给出:
>> fill-template-body fields-types
== ["firstName" "string" "lastName" "string" "age" "int"]
>> fields-types
== ["firstName" "string" "lastName" "string" "age" "int"]
>>
尽管我会希望该字段类型保持不变:
fields-types: ["First Name" "string" "Last Name" "string" "Age" "int"]
当然,我可以尝试通过修改to-camel-case
使用名称的副本,但这不是我认为我应该做的事情。
有没有像Scala中的var
和val
关键字?
感谢会重读了好几遍。仍然有一种机制将是有用的给予选择,可能类似val关键字http://reboltutorial.com/blog/scala-val-keyword/?将不得不考虑它。 – 2010-07-31 20:16:05
在我看来,你想“保护值,不发一言这不会发生REBOL(?): FOO:条:‘foobar的’ 保护”富 大写栏 探头富 保护一个字只会阻止您将其分配给其他值。除非您使用副本,否则值本身仍然可以通过其他参考进行操作。 条:复制FOO:“foobar的” 保护“富 大写栏 探头富 – rgchris 2010-07-31 20:33:06
废话,换行不保留意见... – rgchris 2010-07-31 20:33:23