Elite教程系列(一):快速上手

一:什么是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...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值