- 在线时间
- 13 小时
- 最后登录
- 2013-12-8
- 注册时间
- 2010-5-13
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 399 点
- 威望
- 11 点
- 阅读权限
- 30
- 积分
- 282
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 97
- 主题
- 45
- 精华
- 0
- 分享
- 0
- 好友
- 1
升级 91% TA的每日心情 | 难过 2012-8-27 18:22 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
Forcal中,通常模块变量要先声明,后使用。例如:- init(::a,b,c)= a=11, b=22, c=33; //模块变量赋初值& J+ B& q0 M; J0 K) c6 E
- f(x::a,b,c)=x+a+b+c; //函数f中使用了模块变量: g: B# x1 d. P2 U. `
- f(1); //函数调用
复制代码 结果:( I& y. O: X/ W6 x7 y5 G* }. i* I
67./ q5 u8 K% m8 J. K$ o
4 @% K/ I5 s& }( R当使用编译符mvar时,未声明的变量均看作模块变量,故前面的例子可写成:- mvar:! _, S# l. d) Q; ~) ]1 ~$ t* S k
- a=11, b=22, c=33; //模块变量赋初值
) m4 F( l! J8 W% H' X+ @4 c2 T6 v, H - f(x)=x+a+b+c; //函数f中使用了模块变量# V+ I\" `2 B' g# s& W
- f(1); //函数调用
复制代码 结果:8 i5 L6 b; Y% A5 s: v
67.% h2 h6 w0 E- N( P6 u% R
1 Y$ `. Q' K0 O/ _- @1 N3 Z. d这样看起来似乎不错,的确,在简单的程序中,这样写代码很简洁方便。不过,在复杂的程序中却不推荐使用编译符mvar,因为它常常会隐藏一些人为的错误,例如下面的代码通过了编译,但--看看你的眼力,能否发现其中的错误?- mvar:& F; ]' t4 Z7 \4 @- N
- a=11, b=22, c=33; //模块变量赋初值
# ]2 T0 n( K: x. Y& U1 q! z - f(x)=x+a+d+c; //函数f中使用了模块变量) R9 C- D$ R5 U; ]\" q& [0 y( E* S ^
- f(1); //函数调用
复制代码 若显示地声明模块变量,编译器会帮你发现这个错误:- init(::a,b,c)= a=11, b=22, c=33; //模块变量赋初值2 v4 ]9 Y4 M' x' t; b1 _8 P5 g
- f(x::a,b,c)=x+a+d+c; //函数f中使用了模块变量: v$ z! B6 s5 i
- f(1); //函数调用
复制代码 故复杂的程序中,慎用编译符mvar。 |
zan
|