您所在的位置:开发 > .NET > .NET程序员新方向 Ruby核心语法入门(7)

.NET程序员新方向 Ruby核心语法入门(7)

2008-10-31 09:53 黄永兵 译 51CTO.com 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!

本文的目的是为了找出为什么.NET程序员都想学习并使用Ruby,并探索Ruby语言的核心语法。

AD:

元编程

即使Ruby没有属性,你也可以使用函数调用,通常不需要括弧来模拟属性,你也需要影响Ruby以“=”结束函数的特殊处理方式,让它们担当调节器的作用。

你可以象下面这样定义一个person类:

irb(main):001:0> class Person
   irb(main):002:1>   def age
   irb(main):003:2>     @age
   irb(main):004:2>   end
   irb(main):005:1>   def age=(value)
   irb(main):006:2>     @age = value
   irb(main):007:2>   end
   irb(main):008:1> end
   => nil

接下来就可以使用person类的实例,将age当作person类的一个属性来处理,如:

irb(main):009:0>p = Person.new
   =>#

如果你想将age的默认值设为一个非零的值,那么你可以使用initialize函数来设置。

这个代码显得非常标准,如果这是一个类似c#的语言,你可能会使用类似Visual Studio中片段,甚至静态代码的产生会自动生成reader和writer的属性。
在Ruby中,你可以使用元编程做一点努力就可以创建这些事物,理想情况下,你可以编写类似下面这样的代码:

class Person
     prop :age
   end

你应该在对象上定义个类(静态)函数以便你在定义自己的类时可以使用它,你也可以使用一个你还没有看到过的函数,class_eval函数,如:

irb(main):001:0> class Object
   irb(main):002:1>   def self.prop *names
   irb(main):003:2>     names.each { |name|
   irb(main):004:3*       self.class_eval "
   irb(main):005:3"         def #{name}
   irb(main):006:3"           @#{name}
   irb(main):007:3"         end"
   irb(main):008:3>       self.class_eval "
   irb(main):009:3"         def #{name}=(value)
   irb(main):010:3"           @#{name} = value
   irb(main):011:3"         end"
   irb(main):012:3>     }
   irb(main):013:2>     nil
   irb(main):014:2>   end
   irb(main):015:1> end
   => nil

上面使用的class_eval函数是创建了另外一个函数结束的,它给字符串赋值,因此你可以在你的类中编写自己的函数。

每个传递给prop函数的名字向新类添加了两个函数:getter和setter。最终使用你传递给prop的名字替换掉#{name}。

接下来,你可以在你的类定义中使用prop了,如:

irb(main):016:0> class Person
   irb(main):017:1>   prop :age, :name
   irb(main):018:1>
   irb(main):019:1*   def initialize(age, name)
   irb(main):020:2>     @age = age
   irb(main):021:2>     @name = name
   irb(main):022:2>   end
   irb(main):023:1> end
   => nil
   irb(main):024:0> p = Person.new(36, "Brad")
   => #

在你的环境中有了这些便利的工具后,你可以更快速地创建更高层次的类,使用这些元编程技巧可以帮助你工作得更好,不需要依赖于编辑片段或编译时代码生成。

小结

本文只是对Ruby中便利工具做了一个皮毛介绍,今天学习好Ruby可以在当Ruby..NETSilverlight中可用时帮助你,有这么强大的一个动态编程语言,你的编程工具箱也会扩宽许多,但更重要的是,它可以帮助你开始以一种新的方式思考问题和解决方案。


【编辑推荐】

  1. Java、.Net、PHP、Ruby优劣势概览
  2. Ruby语言实现的Ruby语法分析器:ruby_parser 1.0
【责任编辑:李明源 TEL:(010)68476606】

内容导航
 第 1 页:Ruby示例  第 2 页:基础类型
 第 3 页:数组  第 4 页:
 第 5 页:Ruby支持变量参数  第 6 页:扩展Ruby内置
 第 7 页:元编程

分享到:

网友评论TOP5

查看所有评论(

提交评论

  1. 专题:JVM编程语言,你的选择?
  2. 宅男程序员给老婆课程之11:域模型

文章排行

本月本周24小时

热点专题

更多>>

读书

非常网管——网络应用
在网络应用越来越复杂的今天,传统的网络应用已经不能满足企业和用户的需要,这就对网络管理员、信息管理部门提出了更高的要求。

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 移动互联网生活门户 灵客风LinkPhone