Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
2008-01-04 09:18
1116 查看
(一)Ruby中一切都是对象,包括一个常数.
比如可以用.class属性来查看一个对象的类型,你可以看下1.class,会发现常数1的类型是Fixnum,1不过是Fixnum的一个实例。还可以使用-37这个Fixnum的实例方法abs来取得绝对值:-37.abs()会返回37
又如输入一个1.1.class,会返回Float。
(二)Ruby语法
Ruby中的类以class开始 以end结束,类名首字母的约定是大写。
Ruby中的方法以def开始 以end结束,方法名首字母的约定是小写。
Ruby中的局部变量名首字母的约定是小写。
Ruby中的构造函数名称为initialize。
Ruby中的成员变量(实例变量)前导@符,在initialize里进行声明与初始化。
Ruby中的属性用attr_writer和attr_reader声明,分别对应c#的set,get,使用了attr_accessor是可读也可写
Ruby中的全局变量前导$符。
Ruby中的常数(常量)用大写字母开头,约定是全部大写。
Ruby中任何的表达式都会返回值,sample
class Rectangle
def initialize(wdth, hgt)
@width = wdth
@height = hgt
end
def width=(wdth)
@width = wdth
end
end
r = Rectangle.new(2,3)
puts r.width = 5 #output 5
puts r.width # error! because the width not support read
继续补充下attr_accessor的使用,sample
class Rectangle
attr_accessor :width
attr_accessor :height
attr_accessor :width2
attr_accessor :height2
def initialize(wdth, hgt)
@width = wdth
@height = hgt
end
def area()
return @width * @height
end
def area2()
return @width2 * @height2
end
end
r = Rectangle.new(2,3)
r.width = 5 # give samename's variable value
r.height = 5
puts r.area() #outputs is 25
r.width2 = 6 # not samename's variable create
r.height2 = 6
puts r.area2() # outputs is 36
上面的代码说明了,在使用attr_accessor的时候,会寻找是否有同名的成员变量,如果有则访问同名成员变量,如果没有会默认创建一个前导@的成员变量
(三)神奇的操作符重载
Ruby支持操作符重载,而且很神奇!
class Rectangle
attr_accessor :width
attr_accessor :height
def initialize(wdth, hgt)
@width = wdth
@height = hgt
end
def area()
return @width * @height
end
def +(addRectangle)
return self.area + addRectangle.area
end
end
r1 = Rectangle.new(2,2)
r2 = Rectangle.new(3,3)
puts r1+r2 # operator override
puts r1+(r2)
puts r1.+(r2) # standard function calling format
神奇吧,其实把+号理解为一个函数的名字最好不过了,就像最后一个写法,哈哈。
(四)参数的传递
参数的传递中有默认值与可变长参数两个比较有特点的地方,其他语言有的,ruby也有。
1.参数的默认值
默认值的设置很简单,与其他语言一样,sample
class Rectangle
attr_accessor :width
attr_accessor :height
def initialize(wdth = 2, hgt = 2)
@width = wdth
@height = hgt
end
def area()
return @width * @height
end
end
r1 = Rectangle.new
puts r1.area
看到了吧,使用默认值了
2.可选参数,可变长参数 sample
class ParamSample
def sayHello(*names)
puts names.class
puts "Hello #{names.join(",")}!"
end
end
ps = ParamSample.new
ps.sayHello #output Array Hello !
ps.sayHello("lee","snake") #output Array Hello lee,snake!
可以看出,可变长参数前缀*号,可变长参数的实质是一个Array,呵呵。
比如可以用.class属性来查看一个对象的类型,你可以看下1.class,会发现常数1的类型是Fixnum,1不过是Fixnum的一个实例。还可以使用-37这个Fixnum的实例方法abs来取得绝对值:-37.abs()会返回37
又如输入一个1.1.class,会返回Float。
(二)Ruby语法
Ruby中的类以class开始 以end结束,类名首字母的约定是大写。
Ruby中的方法以def开始 以end结束,方法名首字母的约定是小写。
Ruby中的局部变量名首字母的约定是小写。
Ruby中的构造函数名称为initialize。
Ruby中的成员变量(实例变量)前导@符,在initialize里进行声明与初始化。
Ruby中的属性用attr_writer和attr_reader声明,分别对应c#的set,get,使用了attr_accessor是可读也可写
Ruby中的全局变量前导$符。
Ruby中的常数(常量)用大写字母开头,约定是全部大写。
Ruby中任何的表达式都会返回值,sample
class Rectangle
def initialize(wdth, hgt)
@width = wdth
@height = hgt
end
def width=(wdth)
@width = wdth
end
end
r = Rectangle.new(2,3)
puts r.width = 5 #output 5
puts r.width # error! because the width not support read
继续补充下attr_accessor的使用,sample
class Rectangle
attr_accessor :width
attr_accessor :height
attr_accessor :width2
attr_accessor :height2
def initialize(wdth, hgt)
@width = wdth
@height = hgt
end
def area()
return @width * @height
end
def area2()
return @width2 * @height2
end
end
r = Rectangle.new(2,3)
r.width = 5 # give samename's variable value
r.height = 5
puts r.area() #outputs is 25
r.width2 = 6 # not samename's variable create
r.height2 = 6
puts r.area2() # outputs is 36
上面的代码说明了,在使用attr_accessor的时候,会寻找是否有同名的成员变量,如果有则访问同名成员变量,如果没有会默认创建一个前导@的成员变量
(三)神奇的操作符重载
Ruby支持操作符重载,而且很神奇!
class Rectangle
attr_accessor :width
attr_accessor :height
def initialize(wdth, hgt)
@width = wdth
@height = hgt
end
def area()
return @width * @height
end
def +(addRectangle)
return self.area + addRectangle.area
end
end
r1 = Rectangle.new(2,2)
r2 = Rectangle.new(3,3)
puts r1+r2 # operator override
puts r1+(r2)
puts r1.+(r2) # standard function calling format
神奇吧,其实把+号理解为一个函数的名字最好不过了,就像最后一个写法,哈哈。
(四)参数的传递
参数的传递中有默认值与可变长参数两个比较有特点的地方,其他语言有的,ruby也有。
1.参数的默认值
默认值的设置很简单,与其他语言一样,sample
class Rectangle
attr_accessor :width
attr_accessor :height
def initialize(wdth = 2, hgt = 2)
@width = wdth
@height = hgt
end
def area()
return @width * @height
end
end
r1 = Rectangle.new
puts r1.area
看到了吧,使用默认值了
2.可选参数,可变长参数 sample
class ParamSample
def sayHello(*names)
puts names.class
puts "Hello #{names.join(",")}!"
end
end
ps = ParamSample.new
ps.sayHello #output Array Hello !
ps.sayHello("lee","snake") #output Array Hello lee,snake!
可以看出,可变长参数前缀*号,可变长参数的实质是一个Array,呵呵。
相关文章推荐
- Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
- 初识对象——类的定义和调用,属性与方法以及名称空间
- Javascript中的window对象基本属性和方法以及对alert,confirm,prompt的使用
- JavaScript基础[用途、基本使用、批量产生对像、对象调用、对批量生产对象进行验证、语法的灵活性、js的内置对象]
- oc中成员变量的set/get方法 以及 属性点语法的使用
- ruby范例3:对象,方法调用,属性赋值
- 当一个方法只在父类中定义时,调用该方法时会使用父类中的属性
- Server对象有那些属性方法以及怎样使用
- JavaScript对象内联函数的使用,对象内部方法和属性的使用,以及事件冒泡的处理方式
- Scala类的定义,主/辅构造器,以及方法中的变量定义,单例对象,伴生对象,Apply方法调用,应用程序对象
- JavaDay08--Homework(定义接口和类并调用属性和方法+对象的多态性+打印对象+判定对象相等)
- Java学习笔记十四:如何定义Java中的类以及使用对象的属性
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- Server对象有那些属性方法以及怎样使用
- 对javascript基本对象的属性以及方法的实例介绍
- C#反射新建类实例和调用类方法及属性帮助类 以及获取或设置对象属性中字段值帮助类
- 使用反射依导航路径调用对象成员方法,或返回对象子、孙属性或字段成员[转]
- UI 基础----UIScrollView 的基本属性使用以及代理的使用方法
- iOS在分类中声明属性的方法(不提倡使用)以及关联对象介绍
- javascript 定义对象、方法和属性的使用方法(prototype)