作者godfat (godfat 真常)
看板PLT
标题Re: [问题] 为什麽local variable的scope不能延及ꐠ…
时间Wed Mar 5 12:39:32 2008
※ 引述《mystea (mystea)》之铭言:
: 大家好, 我有一个粗浅的关於scope的问题想请教大家.
: 写程式的时候, local variable的scope都仅限於自己这个函数,
: 如果想用子函式去碰就非得pass by reference传进去才行.
其实这不见得是一个好主意,因为我们写程式本来就要尽量减少
dependency, side-effect, 等等东西。不是说要去碰就非得
call by reference, 而是除非必要,否则尽量不要这麽做。
: 我初学scope时, 老师跟我说这样主要的目的是为了名称可以重复使用.
这个说法我是觉得太随便了,名称重复使用是很细微的事了。
我想你应该已经知道 local variable 的一些好处,
所以一些对於 local variable 的说明我就删去了....
(刚刚不小心打了不少,才注意到标题的问题,
好像不是问 local variable 本身....)
首先请考虑递回的状况,你要怎麽单单使用 namespace 指定 variable?
然而,local scope 存在的时候,那个 local variable 又真的是存在?
当你在说 son::i 时,son 被唤起了吗?没有的话这个 son::i 是指谁?
其实写程式是要尽量减少 side-effect, 不能避免时才使用 side-effect,
这是为了降低程式复杂度与相依性,使得程式可重复利用性更高。
如此一来,直接去接触其他某个 local scope 下的 variable,
是和这种目标相违背的。在 functional language 中,这种限制会更严格。
--
By Gamers, For Gamers - from the past Interplay
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18
1F:推 PsMonkey:我倒是不觉得那个说法随便,可以说是一切好处的起点 03/05 14:18
2F:推 jaiyalas:终於出现一点水流了 XD 03/05 22:30
3F:→ godfat:我是觉得那算是其他好处的附加价值 03/05 23:12