一:什么是Elite.
更多的信息,你可以查看 [url]http://www.operamasks.org[/url] 浏览
二:关于本教程的目录
初步的打算:
第一篇:快速上手
第二篇:数据类型及其控制语句
第三篇:内置函数及其扩展
第四篇:集成AOM的应用
第五篇:独立使用
第六篇:思考
今天我们先来熟悉下Elite长的什么样子,第一篇:快速上手
三:安装
当前最新elite版本为0.2,可以从这里下载
[url]http://sourceforge.net/project/showfiles.php?group_id=214934[/url]
里面包括elite.jar,elite-src.jar,以及两个启动的脚本
四:运行
elite自带了一个交互的shell
在windows下运行
[code]
bin/elite.cmd
[/code]
在*nix下运行
[code]bin/elite.sh[/code]
或者直接运行
[code]java -jar elite.jar[/code]
启动的界面如下:
[img]http://mmm.iteye.com/upload/picture/pic/9090/ed368690-ea0b-367a-8582-71d1ec699e02.png[/img]
看到[color=darkred][b]>[/b][/color] 说明已经启动成功,我们先来编写第一个例子:
注:
elite是基于java的,在运行请前先确认你正确安装了jdk。这方面的资料google下会有很多,我们不多做介绍。
五:Hello World
每个程序的开篇都是Hello World,我们也不例外,让我们开始elite的Hello world
[code]
>define hello = "Hello World"
>print(hello)
>Hello World
[/code]
1:define 在这里是关键字,用来定义变量
2:print 同于常用的System.out.println(hello),这里的括号并不能省略,个人感觉有点不太喜欢,还是偏好括号可选的语法。
[code]
print hello
[/code]
同样你可以演练一样简单的计算器,来熟悉下shell
[img]http://mmm.iteye.com/upload/picture/pic/9100/7da22dbd-39aa-36f7-a1f0-06a73d7f42f4.png[/img]
(这里我们故意的用0做除数,目的就是想查看它报错)
六:函数
[code]
>define sayHello = {name=>"Hello,$name"}
>sayHello("martin")
>Hello martin
[/code]
看起来似乎不习惯,OK,我们修改下
[code]
>define sayHello(name){"Hello $name"}
>sayHello("martin")
>Hello martin
[/code]
哦,这个看起来跟我们普通的函数还长的有点像。
我们能否对name做更多一点操作呢?
譬如:sayHello2(‘martin’),能否自动将首字母大写呢?使用过ruby的朋友都知道,ruby的字符对象有个capitalize 方法,
Elite内置的方法并没有提供这样的功能,不过Elite够强大,允许你如ruby一样,打开对象,添加属于你自己的方法。你可以通过attach来追加新的方法。
[code]
String.attach('capitalize') {
if (this.length > 0) {
Character.toUpperCase(this[0]) + this[1..*];
} else {
this;
}
}
[/code]
capitalize是方法名,{} 之间是代码块。在代码块访问本身对象,你可以通过关键字this来访问。
现在我们就可以重新定义我们的sayHello了
[code]
define sayHello3 = {name =>”Hello ${name.capitalize}”}
[/code]
七:OO!
是的,我们好像漏掉了这一点。但是细心的读者难道不曾想过,elite基于java的,java中的OO同样也是elite中的OO.我们这里介绍的是更多有趣点的东西。
Ruby,号称一切皆对象(Oh,my god,老掉牙的话题了)。
先从new开始说起:在ruby中,new是object的一个方法
[code]user = User.new[/code]
而不是我们java中
[code]User user= new User()[/code]
在Elite中你不仅仅可以保持原来的语法,还可以同时使用这一新的语法
[code]
>define a = new String('aa')
>a
>aa
>define b = String.new('bb')
>b
>bb
[/code]
哦,看起来不错。不过这个太简单了点。OK,我们继续
[img]http://mmm.iteye.com/upload/picture/pic/9096/1a37ac0c-6d9b-3ea1-95a5-08bfab8b4fdb.png[/img]
1:)我们定义一个新的class:Greeting
2:)通过define定义属性 name
4:)构造函数,这个和java一样,没啥区别
6:)定义sayHello 函数,返回一串字符。这里或许有同学要疑问了,上面name是包括在${}里面的,为什么到这里不要{}了呢,这个其实是一样的。简洁就是美,去掉之
9:)实例化一个Greeting对象,并传递参数’Martin’赋值给name属性
10:)调用print属性sayHello的结果
12:)修改name的属性值。怎么不需要setter?如果还保持那些,不如回家继续写java代码算了
13:)重新输出
10、13:)这里我们采用两种不同的输出,仅仅想说明elite的有趣性。我们会再以后的章节详细介绍的。
执行,为了能让elite在任何地方执行,建议你将路径添加到当前的PATH中,并且添加ELITE_HOME至当前环境中。
现在再执行
[code]
elite greeting.xel
[/code]
会看到输入的结果
[img]http://mmm.iteye.com/upload/picture/pic/9092/86cd37f2-42a6-3047-afb9-d90ff0b9b121.png[/img]
通过new Object还可以动态的创建对象
[code]
define greeting = new Object{
define name
sayHello(){"Hello $name"}
}
greeting.name = 'Martin'
print(greeting.sayHello())
[/code]
八:来点更精彩的
在elite中运行你自己定义语法,来自于sampels/dsl.xel
[code]
define syntax {
Send :message to :someone
=> print("Hello, ${:someone}! ${:message}.")
}
Send 'Welcome to earth' to 'uncle Martin';
define syntax {
Convert :amount :from into :to
=> :amount[:from] -> :to
}
print(Convert 25 DEM into ECU);
[/code]
Cool!
九:接下来
敬请关注 elite:)后面的文章更精彩,o(∩_∩)o...
更多的信息,你可以查看 [url]http://www.operamasks.org[/url] 浏览
二:关于本教程的目录
初步的打算:
第一篇:快速上手
第二篇:数据类型及其控制语句
第三篇:内置函数及其扩展
第四篇:集成AOM的应用
第五篇:独立使用
第六篇:思考
今天我们先来熟悉下Elite长的什么样子,第一篇:快速上手
三:安装
当前最新elite版本为0.2,可以从这里下载
[url]http://sourceforge.net/project/showfiles.php?group_id=214934[/url]
里面包括elite.jar,elite-src.jar,以及两个启动的脚本
四:运行
elite自带了一个交互的shell
在windows下运行
[code]
bin/elite.cmd
[/code]
在*nix下运行
[code]bin/elite.sh[/code]
或者直接运行
[code]java -jar elite.jar[/code]
启动的界面如下:
[img]http://mmm.iteye.com/upload/picture/pic/9090/ed368690-ea0b-367a-8582-71d1ec699e02.png[/img]
看到[color=darkred][b]>[/b][/color] 说明已经启动成功,我们先来编写第一个例子:
注:
elite是基于java的,在运行请前先确认你正确安装了jdk。这方面的资料google下会有很多,我们不多做介绍。
五:Hello World
每个程序的开篇都是Hello World,我们也不例外,让我们开始elite的Hello world
[code]
>define hello = "Hello World"
>print(hello)
>Hello World
[/code]
1:define 在这里是关键字,用来定义变量
2:print 同于常用的System.out.println(hello),这里的括号并不能省略,个人感觉有点不太喜欢,还是偏好括号可选的语法。
[code]
print hello
[/code]
同样你可以演练一样简单的计算器,来熟悉下shell
[img]http://mmm.iteye.com/upload/picture/pic/9100/7da22dbd-39aa-36f7-a1f0-06a73d7f42f4.png[/img]
(这里我们故意的用0做除数,目的就是想查看它报错)
六:函数
[code]
>define sayHello = {name=>"Hello,$name"}
>sayHello("martin")
>Hello martin
[/code]
看起来似乎不习惯,OK,我们修改下
[code]
>define sayHello(name){"Hello $name"}
>sayHello("martin")
>Hello martin
[/code]
哦,这个看起来跟我们普通的函数还长的有点像。
我们能否对name做更多一点操作呢?
譬如:sayHello2(‘martin’),能否自动将首字母大写呢?使用过ruby的朋友都知道,ruby的字符对象有个capitalize 方法,
Elite内置的方法并没有提供这样的功能,不过Elite够强大,允许你如ruby一样,打开对象,添加属于你自己的方法。你可以通过attach来追加新的方法。
[code]
String.attach('capitalize') {
if (this.length > 0) {
Character.toUpperCase(this[0]) + this[1..*];
} else {
this;
}
}
[/code]
capitalize是方法名,{} 之间是代码块。在代码块访问本身对象,你可以通过关键字this来访问。
现在我们就可以重新定义我们的sayHello了
[code]
define sayHello3 = {name =>”Hello ${name.capitalize}”}
[/code]
七:OO!
是的,我们好像漏掉了这一点。但是细心的读者难道不曾想过,elite基于java的,java中的OO同样也是elite中的OO.我们这里介绍的是更多有趣点的东西。
Ruby,号称一切皆对象(Oh,my god,老掉牙的话题了)。
先从new开始说起:在ruby中,new是object的一个方法
[code]user = User.new[/code]
而不是我们java中
[code]User user= new User()[/code]
在Elite中你不仅仅可以保持原来的语法,还可以同时使用这一新的语法
[code]
>define a = new String('aa')
>a
>aa
>define b = String.new('bb')
>b
>bb
[/code]
哦,看起来不错。不过这个太简单了点。OK,我们继续
[img]http://mmm.iteye.com/upload/picture/pic/9096/1a37ac0c-6d9b-3ea1-95a5-08bfab8b4fdb.png[/img]
1:)我们定义一个新的class:Greeting
2:)通过define定义属性 name
4:)构造函数,这个和java一样,没啥区别
6:)定义sayHello 函数,返回一串字符。这里或许有同学要疑问了,上面name是包括在${}里面的,为什么到这里不要{}了呢,这个其实是一样的。简洁就是美,去掉之
9:)实例化一个Greeting对象,并传递参数’Martin’赋值给name属性
10:)调用print属性sayHello的结果
12:)修改name的属性值。怎么不需要setter?如果还保持那些,不如回家继续写java代码算了
13:)重新输出
10、13:)这里我们采用两种不同的输出,仅仅想说明elite的有趣性。我们会再以后的章节详细介绍的。
执行,为了能让elite在任何地方执行,建议你将路径添加到当前的PATH中,并且添加ELITE_HOME至当前环境中。
现在再执行
[code]
elite greeting.xel
[/code]
会看到输入的结果
[img]http://mmm.iteye.com/upload/picture/pic/9092/86cd37f2-42a6-3047-afb9-d90ff0b9b121.png[/img]
通过new Object还可以动态的创建对象
[code]
define greeting = new Object{
define name
sayHello(){"Hello $name"}
}
greeting.name = 'Martin'
print(greeting.sayHello())
[/code]
八:来点更精彩的
在elite中运行你自己定义语法,来自于sampels/dsl.xel
[code]
define syntax {
Send :message to :someone
=> print("Hello, ${:someone}! ${:message}.")
}
Send 'Welcome to earth' to 'uncle Martin';
define syntax {
Convert :amount :from into :to
=> :amount[:from] -> :to
}
print(Convert 25 DEM into ECU);
[/code]
Cool!
九:接下来
敬请关注 elite:)后面的文章更精彩,o(∩_∩)o...