Целью приведенной ниже функции является возвращение строки, вставившей значение аргумента между двумя звездами.Что именно произошло, когда вы не использовали «копию» для обработки строки?
star-name: func [name /local stars] [
stars: "**"
insert next stars name
stars
]
print star-name "test" ;*test*
print star-name "this" ;*thistest*, but what I really want is *this*
Во второй раз, когда я вызываю функцию, аргумент первого вызова по-прежнему остается вставленным. Я знаю, что ответ заключается в использовании copy "**"
. Мой вопрос в том, не переназначает ли переменную stars
на "**"
каждый раз, когда вызывается функция?
Думаю, у меня есть идея. В Rebol функции - это просто блоки. Это сильно отличается от функций на других языках. Большое спасибо :) –
Некоторое понимание того, почему Rebol ведет себя так: [Является Rebol чистым функциональным языком] (http://www.rebol.com/article/0206.html) – rgchris