繁体中文
设为首页
加入收藏

推荐

公告

推荐文章
· 新手入门:写Java程序的三...
· Java SE 6新特性:Instru...
· Java SE 6 新特性: HTTP...
· Hibernate的检索策略小结
· AJAX推送与拉取方式的比较
· Java有能力抵挡LAMP的进...
· Hibernate+Struts的J2EE...
· 想动就“动”-Java也可以...
· Spring 2.0+ JRuby 快速入门
· 对J2EE中的DAO组件编写单...
热点文章
广告

当前位置:设计首页 >> 程序开发 >> Java >> Spring 2.0+ JRuby 快速入门

Spring 2.0+ JRuby 快速入门 (4)

2008-01-02 09:46:24  作者:  来源:互联网  浏览次数:41  文字大小:【】【】【
简介:  随着Ruby,特别是Ruby on Rail在应用领域所取得的成功,近两年来动态语言成为炙手可热的技术之一。由于动态语言灵活、松散的结构,使得实现某些功能特别方便。Spring 顺应时势,在Spring 2.0中适时推出了对 ...
关键字:Spring 2.0 JRuby
  调用方法

  在定义好方法后,下面我们来调用这些方法:

irb(main):032:0> greeting_1
How are you!
=> nil
irb(main):034:0> greeting_2("Tom")
How are you,Tom
=> nil
irb(main):035:0> greeting_3
How are you,John
=> nil

  对于没有入参的方法来说,可以直接不带括号进行调用。对于有默认值的入参可以不提供参数值。

  定义类

  下面的代码定义了一个具有两个方法的Waiter类:

irb(main):004:0> class Waiter
irb(main):005:1> def initialize(name="Sir")
irb(main):006:2> @name = name
irb(main):007:2> end
irb(main):008:1> def greeting
irb(main):009:2>攀?畱瑯?? ?o??ū puts "How are you,#{@name}"
irb(main):010:2> end
irb(main):011:1> def send_off
irb(main):012:2> puts "Byebye #{@name}"
irb(main):013:2> end
irb(main):014:1> end

  @name中的@是新出现的关键字,表示定义一个实例变量,实例变量可以被类中的所有方法引用。

  使用类

  如何调用刚才定义的Waiter,并让它真正工作起来呢?我们马上着手做这样的工作:

irb(main):015:0> Waiter.new("Miss")
=> #<Waiter:0xdbd3a14 @name="Miss">
irb(main):016:0> w = Waiter.new("Miss")
=> #<Waiter:0xdbd0d8c @name="Miss">
irb(main):017:0> w.greeting
How are you,Miss
=> nil

  但你不能通过g.name引用实例变量,Ruby允许你随时改变类的定义,下面的代码让name实例变量对外可见。

  类的动态调整

  通过下面的代码,改变Waiter类的结构定义,让name实例变量对外可见:

irb(main):024:0> class Waiter
irb(main):025:1> attr_accessor :name
irb(main):026:1> end
=> nil
irb(main):027:0> w = Waiter.new("Miss")
=> #<Waiter:0xdbba230 @name="Miss">
irb(main):028:0> w.name
=> "Miss"

  在Ruby语言中,你能够多次修改某个类,而修改所带来的变化自动对后面的调用生效。我们通过使用attr_accessor使name属性对外可见,相当于在Java中将private调整为public。动态语言的灵活性之一表现在程序的过程中可以调整程序本身,甚至在程序中创建另外一段程序并动态进行执行。所以有人说,不管是大师还是一般的开发者使用Java编写的程序在结构上都不会有太大的差别,但大师和一般开发者用动态语言编写的代码却可能有着天壤之别。
[1] [2] [3] [4] [5] [6] [7]


相关文章