- 在线时间
- 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; //模块变量赋初值% c: r4 `\" H$ g6 Q2 S3 s% C( x
- f(x::a,b,c)=x+a+b+c; //函数f中使用了模块变量4 c\" E% c3 y* d\" o
- f(1); //函数调用
复制代码 结果:* m, ^9 K" [ r9 A" R5 u
67.
3 w1 F5 z; z+ R- u) P* f, r7 d/ C7 b" g
当使用编译符mvar时,未声明的变量均看作模块变量,故前面的例子可写成:- mvar:
\" @ u3 L+ R- Y$ e) z' m\" S( R; F - a=11, b=22, c=33; //模块变量赋初值
6 Z( _* o\" {7 j9 @+ s\" g8 {8 _ - f(x)=x+a+b+c; //函数f中使用了模块变量
\3 q/ z$ ?' V4 s' f7 w! U - f(1); //函数调用
复制代码 结果:
D7 ^" s) p1 m67." z- z( j3 D b8 M( c: M6 o
) }& L% ^! a9 T% v2 O/ U8 \* d" R这样看起来似乎不错,的确,在简单的程序中,这样写代码很简洁方便。不过,在复杂的程序中却不推荐使用编译符mvar,因为它常常会隐藏一些人为的错误,例如下面的代码通过了编译,但--看看你的眼力,能否发现其中的错误?- mvar:# R5 s7 i/ D1 h) ~3 _/ h/ ^
- a=11, b=22, c=33; //模块变量赋初值
& m! V1 K1 C3 X9 J% R - f(x)=x+a+d+c; //函数f中使用了模块变量
3 {- s \) z) C( [) N# k - f(1); //函数调用
复制代码 若显示地声明模块变量,编译器会帮你发现这个错误:- init(::a,b,c)= a=11, b=22, c=33; //模块变量赋初值: T% r! x! P5 U
- f(x::a,b,c)=x+a+d+c; //函数f中使用了模块变量% H# S' ]% C9 [; l5 d6 i* m9 u: s6 a
- f(1); //函数调用
复制代码 故复杂的程序中,慎用编译符mvar。 |
zan
|