Celem poniższej funkcji jest zwrócenie ciągu znaków zawierającego wartość argumentu między dwiema gwiazdami.Co dokładnie się stało, gdy nie używasz "copy" do obsługi ciągu znaków?
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*
Po drugim wywołaniu funkcji, argument pierwszego wywołania nadal pozostaje wstawiony. Wiem, że odpowiedzią jest użycie copy "**"
. Moje pytanie brzmi, czy nie przypisuje ponownie zmiennej stars
do "**"
za każdym razem, gdy wywoływana jest funkcja?
Myślę, że mam pomysł. W Rebol funkcje są po prostu blokami. Jest zupełnie inny niż funkcje w innych językach. Wielkie dzięki :) –
Jakiś wgląd w to, dlaczego Rebol zachowuje się w ten sposób: [Czy Rebol to czysty język funkcjonalny] (http://www.rebol.com/article/0206.html) – rgchris