作者mystea (mystea)
看板PLT
标题Re: [问题] 为什麽local variable的scope不能延及ꐠ…
时间Wed Mar 5 17:20:30 2008
※ 引述《godfat (godfat 真常)》之铭言:
: ※ 引述《mystea (mystea)》之铭言:
: : 大家好, 我有一个粗浅的关於scope的问题想请教大家.
: : 写程式的时候, local variable的scope都仅限於自己这个函数,
: : 如果想用子函式去碰就非得pass by reference传进去才行.
: 其实这不见得是一个好主意,因为我们写程式本来就要尽量减少
: dependency, side-effect, 等等东西。不是说要去碰就非得
: call by reference, 而是除非必要,否则尽量不要这麽做。
: : 我初学scope时, 老师跟我说这样主要的目的是为了名称可以重复使用.
: 这个说法我是觉得太随便了,名称重复使用是很细微的事了。
: 我想你应该已经知道 local variable 的一些好处,
: 所以一些对於 local variable 的说明我就删去了....
: (刚刚不小心打了不少,才注意到标题的问题,
: 好像不是问 local variable 本身....)
我很愿意听godfat大讲讲local variable有甚麽好处. 我其实只上过最基础
的程设, 所以在理论方面很薄弱的. 一些基础的问题很高兴有版友愿意指教.
: 首先请考虑递回的状况,你要怎麽单单使用 namespace 指定 variable?
: 然而,local scope 存在的时候,那个 local variable 又真的是存在?
: 当你在说 son::i 时,son 被唤起了吗?没有的话这个 son::i 是指谁?
: 其实写程式是要尽量减少 side-effect, 不能避免时才使用 side-effect,
: 这是为了降低程式复杂度与相依性,使得程式可重复利用性更高。
: 如此一来,直接去接触其他某个 local scope 下的 variable,
: 是和这种目标相违背的。在 functional language 中,这种限制会更严格。
递回的时候内定的namespace名称可以加入son被呼叫的次数, 比方说堆叠最底层的son:i
叫son0:i, 接下来呼叫的叫做son1:i, son2:i, 等等.
当然上一篇的回应中我已经了解到一部分程式语言不支援修改外界local variable的
原因. 所以像这样回文只是希望能够抛砖引玉. (比方说跟大家讨论这种功能的可行性,
优缺点以及学习更多其他的原因等等:P)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 76.170.235.113
1F:推 wctang:知道递回应该就不只是最基础的程设了 XD 03/27 11:58