1、类
classOrder <ActiveRecord::Base
defself.sayHello
end
end
定义了ActiveRecord模块中的Base类的子类Order,再类中利用self.方法名定义的方法是类方法,调用的方式为Order. sayHello
从类的外部无法直接访问实例变量,为了访问他们,就要实现访问其值得方法。
例如:class Person
definitialize(name) #Ruby中的构造方法
@name= name;
end
def name #get方法
@name;
end
defname=(new_name) #set方法
@name= new_name;
end
end
其中的get和set方法可以简写为以下:
attr_accessor :name 相当于set、get方法
attr_reader :name 相当于get方法
attr_writer :name 相当于set方法
classPerson
def say_hello #public 方法
end
protected
defsay_hello #protected方法
end
private
defsay_hello #private方法
end
end
类不是Ruby语言的唯一组织结构,另一个组织结构就是模块
2、模块
模块不能创建基于其本身的对象
模块的作用:(1)作为命名空间定义方法,其名称不能与其他地方的名称冲突
(2)允许在不同的类之间共享功能
多个类可以混合在同一个模块中,他们不需要继承就可以共享模块的功能;
也可以将多个模块放到一个类中
3、YAML
YAML通常用来定义配置内容,如数据库、配置内容和翻译;
例如:development:
adapter:sqlite3
database:db/development.sqlite3
pool:5
timeout:5000
4、综合
classPerson
defself.for_dave #在方法中返回新的Person类对象
Person.new(:name=>'Dave')
end
end
classEmployee < Person
end
dave= Employee.for_dave; #返回的是Person类的实例