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

一:什么是Elite.
更多的信息,你可以查看 http://www.operamasks.org 浏览

二:关于本教程的目录
初步的打算:
第一篇:快速上手
第二篇:数据类型及其控制语句
第三篇:内置函数及其扩展
第四篇:集成AOM的应用
第五篇:独立使用
第六篇:思考

今天我们先来熟悉下Elite长的什么样子,第一篇:快速上手

三:安装
当前最新elite版本为0.2,可以从这里下载
http://sourceforge.net/project/showfiles.php?group_id=214934

里面包括elite.jar,elite-src.jar,以及两个启动的脚本

四:运行
elite自带了一个交互的shell

在windows下运行
bin/elite.cmd


在*nix下运行
bin/elite.sh


或者直接运行
java -jar elite.jar


启动的界面如下:
Elite教程系列(一):快速上手

看到 > 说明已经启动成功,我们先来编写第一个例子:

注:
elite是基于java的,在运行请前先确认你正确安装了jdk。这方面的资料google下会有很多,我们不多做介绍。

五:Hello World
每个程序的开篇都是Hello World,我们也不例外,让我们开始elite的Hello world
>define hello = "Hello World"
>print(hello)
>Hello World


1:define 在这里是关键字,用来定义变量
2:print  同于常用的System.out.println(hello),这里的括号并不能省略,个人感觉有点不太喜欢,还是偏好括号可选的语法。
print hello


同样你可以演练一样简单的计算器,来熟悉下shell
Elite教程系列(一):快速上手
(这里我们故意的用0做除数,目的就是想查看它报错)

六:函数
>define sayHello = {name=>"Hello,$name"}
>sayHello("martin")
>Hello martin


看起来似乎不习惯,OK,我们修改下
>define sayHello(name){"Hello $name"}
>sayHello("martin")
>Hello martin


哦,这个看起来跟我们普通的函数还长的有点像。

我们能否对name做更多一点操作呢?
譬如:sayHello2(‘martin’),能否自动将首字母大写呢?使用过ruby的朋友都知道,ruby的字符对象有个capitalize 方法,
Elite内置的方法并没有提供这样的功能,不过Elite够强大,允许你如ruby一样,打开对象,添加属于你自己的方法。你可以通过attach来追加新的方法。
String.attach('capitalize') {
  if (this.length > 0) {
     Character.toUpperCase(this[0]) + this[1..*];
   } else {
     this;
   }
}



capitalize是方法名,{} 之间是代码块。在代码块访问本身对象,你可以通过关键字this来访问。

现在我们就可以重新定义我们的sayHello了
define sayHello3 = {name =>”Hello ${name.capitalize}”} 



七:OO!
是的,我们好像漏掉了这一点。但是细心的读者难道不曾想过,elite基于java的,java中的OO同样也是elite中的OO.我们这里介绍的是更多有趣点的东西。

Ruby,号称一切皆对象(Oh,my god,老掉牙的话题了)。
先从new开始说起:在ruby中,new是object的一个方法
user = User.new

而不是我们java中
User user= new User()


在Elite中你不仅仅可以保持原来的语法,还可以同时使用这一新的语法
>define a = new String('aa')
>a
>aa
>define b = String.new('bb')
>b
>bb


哦,看起来不错。不过这个太简单了点。OK,我们继续
Elite教程系列(一):快速上手

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至当前环境中。

现在再执行
elite  greeting.xel


会看到输入的结果


通过new Object还可以动态的创建对象
define greeting = new Object{
  define name

  sayHello(){"Hello $name"}
}

greeting.name = 'Martin'

print(greeting.sayHello())



八:来点更精彩的
在elite中运行你自己定义语法,来自于sampels/dsl.xel
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);


Cool!

九:接下来
敬请关注 elite:)后面的文章更精彩,o(∩_∩)o...

你可能感兴趣的:(PHP,Google,OO,Ruby,groovy)