Мне известно, что следующее не отражает действительный вопрос ФП, это больше похоже на предложение пересмотреть проект. Зачем здесь начинать передачу параметров «по ссылке»?
Почему бы просто не придерживаться функционального стиля, используя return
и постоянно обновлять переменную pro c -local c
в пределах l oop сценарий тела?
proc one { a c } {
for {set i $a} {$i < 10} {incr i} {
set c [two $c] ;# <= note: passing 'c' by value
puts "Value of c is $c"
}
}
proc two { c_value } {
incr c_value
return $c_value
}
one 0 3
Это сделает two
повторно используемым в разных контекстах разными вызывающими. Также: его можно легко распространить на несколько возвращаемых значений, обновления переменных, используя lassign
в контексте вызывающего (one
).