本文讲述apl脚本语言之简约的设计原则, 并顺便对比一下高级语言之罗嗦, 以方便高级语言程序员学习APL.
C++中例子: int i = 0 ;
apl脚本例子: $i = 0 ;
分析:
A. apl脚本中 变量名以$开始.
B. apl脚本中 变量名不需要预定义类型, 变量的类型是 运行时由方法的执行来动态决定, 变量名仅仅是 变量的名称符号而已. 因此 变量的类型可以动态被改变.
比如:
$i = 0 ; // 当这句话被执行时候, $i被设置为了 整数.
$i = "test" ; // 当这句话被执行以后, $i被设置为了 字符串.
C++中例子:
void swap( int& a, int& b )
{
int c = a ;
a = b ;
b = c ;
}
apl脚本例子:
function swap( $a, $b )
{
$c = $a ;
$a = $b ;
$b = $c ;
}
分析:
1. apl脚本中, function表示定义方法.
2. 方法的类型不需要定义, 在方法执行时候决定.
3. 方法的传入参数类型 不需要定义, 由执行的时候确定.
所有方法的传入参数 都实际是指针, 而不是传值.
C++中例子:
class Point
{
public:
Point( int x, int y ) ;
bool isZero() ;
public:
int m_x ;
int m_y ;
};
....
//产生对象:
Point pt( 0, 0 ) ;
apl 脚本例子:
class Point
{
function Point( $x, $y )
{
$this.x = $x ;
$this.y = $y ;
}
function isZero()
{
if( $this.x==0 && $this.y==0 )
{
return true ;
}
return false ;
}
}
//产生对象:
$pt = newClass( "Point", 0, 0 ) ;
分析:
1. apl脚本中, class表示在脚本中定义方法.
2. apl脚本中, class里面的 与class名同名的方法名为 此class的 构造函数.
3. apl脚本中定义的class是基于 万能对象的扩展, 不需要再定义属性, 直接引用就可以.
4. apl脚本中, class里面的方法, $this表示 调用此class对象的 属性或者方法, 于区别 其他方法和属性.
5. newClass是 apl脚本引擎拦截的方法, 表示产生脚本定义的class对象.