您所在的位置: 首页 > 操作系统 > 开源技术 >

Ruby程序语言之变量与赋值简析(1)

http://os.51cto.com  2006-04-24 10:34  朱先忠 编译  天极  我要评论(0)
  • 摘要:本文介绍Ruby程序设计语言的变量与赋值的基础知识和应用方法
  • 标签:Ruby

变量与赋值

至此,你是否注意到前面所有的示例代码中都缺少某种东西?难道你必须输入常数,实例变量或类变量?绝对不是!这正是Ruby的真正面向对象的天性的一部分。为此,首先让我们看一下Ruby中以前的普通变量。至此,你已经创建了很多Rectangle实例,但是你并没有把它们保留多长时间。比方说,你想要把一个变量赋值给你创建的一个Rectangle实例:

myRectangle=Rectangle.new(4,5)

在Ruby中这是完全有效的代码,而且根本不需要另一行代码来把myRectangle类型化或声明为引用Rectangle的某种东西。在执行这一行代码以后,变量myRectangle就引用一个Rectangle的实例(高度和宽度值分别为4,5)。但是,这仅是一种在任何时刻都可以更改的对象引用,而与对象的类型无关(在Ruby中一切都是对象)。因此,下面的命令提示符行中,你可以容易地把myRectangle赋值给一个字符串:

irb(main):049:0< myRectangle=Rectangle.new(4,5)
=> #<Rectangle:0x587c758 @width=5, @height=4>
irb(main):050:0< myRectangle="Jim's Rectangle"
=> "Jim's Rectangle"

你可以在许多其它程序语言(甚至包括象Java这样的面向对象的语言)中试验一下,并观察从你的IDE所产生的编译错误。

变量,实例变量,类变量,甚至还有"常量"其实都只是对象引用。它们引用对象,但是它们并不是对象本身。因此,它们可以被动态地改变,甚至引用另一种不同类型的对象。

因为这一灵活性,所以必须在Ruby中进行一些约定以帮助每个人都知道某个变量正为代码所使用。其实,你已经看到了其中之一(@符号,它意味着这是一个实例变量)。其它的变量,方法和类命名约定列于下表1中。

  • 局部变量和方法参数以一个小写字母开头。
  • 方法名字以一个小写字母开头。
  • 全局变量以一个$开头。
  • 实例变量以一个@开头。
  • 类变量以两个@开头。
  • 常数以一个大写字母开头(它们经常被指定全部大写)。
  • 类和模块名以一个大写字母开头。
局部变量 全局变量 实例变量 类变量 常数 类名 方法名
aVar $Var @var @@var VAR MyClassmy Method
name $debug @lastName @@interest PI Rectangle area

表1.这个表包含了在Ruby编码约定下的相关示例。

操作符方法

现在,假定你想实现合并Rectangle类的实例或把它们添加到另一个Rectangle实例。你当然可以定义另外一个称为"add"的方法,这种选择利用了Ruby真正的面向对象的特征之一。然而,你还可以重载"+"运算符来适当地把两个Rectangle实例加起来。这个"+"方法(如4+5),对Ruby来说,只是另外一个方法而已。由于只是"另外一个方法",所以你可以给它增加一些功能来满足Rectangle类的需要。例如,你还可以定义"+"运算符来实现一个矩形面积加上另一个矩形面积。

def + (anotherRectangle)
totalArea = area() + anotherRectangle.area()
Rectangle.new(@height,totalArea/@height)
end


共2页: 1 [2] 下一页
【内容导航】
Ruby实用开发手册
微软 Windows 7 技术前瞻
DNS服务器安装优化全攻略
Hyper-V 虚拟化技术专题
虚拟化的“赤壁之战”
 
 验证码: (点击刷新验证码)   匿名发表
  • Linux C编程实战

  • 作者:童永清
  • 本书系统地介绍了在Linux平台下用C语言进行程序开发的过程,集趣味性、实战性于一体的160多段代码实例,帮助读者快速掌握在Linu..
Copyright©2005-2008 51CTO.COM 版权所有