При вызове:
f [(h test) (h test2)]
Я хочу получить:
"<p><h1>test</h1><h1>test2</h1></p>"
Вместо этого я получаю:
"<h1>test2</h1></p>"
Я не понимаю, почему мой код ниже не работает. Обратите внимание, что ниже я хочу использовать функцию g, потому что у меня есть несколько h-подобных функций, каждая из которых вызывает g для их факторизации. Так что не избавляйтесь от g, это специально.
html: copy ""
emit: func [code] [repend html code]
f: func [param [block!]] [
html: copy ""
emit: func [code] [repend html code]
emit <p>
foreach p param [
emit p
]
emit </p>
return html
]
g: func ['arg [string! word!] /local html] [
return h :arg
]
h: func ['arg [string! word!]] [
either word? arg [
text: to-string arg
][
text: arg
]
html: copy ""
emit: func [code] [repend html code]
print text
emit <h1>
emit text
emit </h1>
return html
]
f [(h test) (h test2)]
Обновлять:
Теперь я получаю сообщение об ошибке красным цветом: Ошибка сценария: html не находится в указанном контексте.
f: func[param [block!] /local html][
html: copy ""
emit: func [code] [repend html code]
emit <p>
foreach p param [
emit p
]
emit </p>
return html
]
g: func['arg [string! word!] /local html][
return h :arg
]
h: func['arg [string! word!] /local html][
either word? arg [text: to-string arg][
text: arg
]
html: copy ""
emit: func [code] [repend html code]
print text
emit <h1>
emit text
emit </h1>
return html
]
f [(h test) (h test2)]