- 在线时间
- 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; //模块变量赋初值\" u8 Z* W$ V# a: O
- f(x::a,b,c)=x+a+b+c; //函数f中使用了模块变量\" B: p0 B3 z9 [\" w* h3 [\" Z, _
- f(1); //函数调用
复制代码 结果:/ _4 ~; P% R# B4 q' @) z: n
67.7 a# m8 r7 u3 d+ n+ h+ f
: _# Z# r5 F( f- G, f1 c1 p+ X当使用编译符mvar时,未声明的变量均看作模块变量,故前面的例子可写成:- mvar:
3 T5 B\" H) h% {- n\" B4 Z - a=11, b=22, c=33; //模块变量赋初值; ~, \! e8 a9 F4 D
- f(x)=x+a+b+c; //函数f中使用了模块变量) f# ~2 u0 w# C% k- o. V! B# J
- f(1); //函数调用
复制代码 结果:
! b6 i& f: y" b1 S+ S0 F( @67.8 r5 G+ Y( l' f. y1 @7 d; Z9 b
4 l9 N' z& w5 K) Y/ C- z
这样看起来似乎不错,的确,在简单的程序中,这样写代码很简洁方便。不过,在复杂的程序中却不推荐使用编译符mvar,因为它常常会隐藏一些人为的错误,例如下面的代码通过了编译,但--看看你的眼力,能否发现其中的错误?- mvar: j0 j: o1 G1 ~4 b; B
- a=11, b=22, c=33; //模块变量赋初值5 y5 Z. @# N2 L$ Y3 r7 u
- f(x)=x+a+d+c; //函数f中使用了模块变量
& ^2 p6 d% l: I+ @, C- a2 r - f(1); //函数调用
复制代码 若显示地声明模块变量,编译器会帮你发现这个错误:- init(::a,b,c)= a=11, b=22, c=33; //模块变量赋初值\" ^2 q! M* u8 c5 K
- f(x::a,b,c)=x+a+d+c; //函数f中使用了模块变量
3 y2 p3 h\" r, S# F; u- d3 b/ g' f8 t - f(1); //函数调用
复制代码 故复杂的程序中,慎用编译符mvar。 |
zan
|