几个月没有复习Ruby,很多基础概念开始模糊了,看来还是很有必要写一些东西来整理思路,巩固记忆这些基础概念,顺便把一些容易记错的点写在这里,以防再次忘记。
首先要介绍的是 OOP, 它的全称呼是 Object-Oriented Programming.
Ruby为了解决复杂项目时的文件组织关系,利用了OOP的概念来构建其中的物件。
OOP = DATA + BEHAVIOR
首先来介绍Ruby中的类( class )的概念,可以把它形象地比作用来制作蛋糕的模具,用模具制作出来的众多蛋糕,我们称之为实例 ( instance )。

我们来创建一个class
class Cake
end
然后使用已经创建的 Cake
这个类(模具),来制作一个实例 cheese_cake
cheese_cake = Cake.new
上面两步我们创建了一个类,并且用这个类创建了一个实例。接下来介绍一下类内部的构建器( constructor )initialize方法。
class Cake
def initialize
end
end
实际上当你运行 Cake.new
的时候。new调用了initialize这个方法来创建实例,即使你没有写initialize,它也存在。当你希望给实例的初始状态加上一些值的时候,可以使用 instance variable ( 实例变量 )@开头的变量。在这里我们给蛋糕加上颜色这个实例变量,并赋值为red。
class Cake
def initialize
@color = "red"
end
end
然后我们再次用这个Class来创建一个实例
cheese_cake = Cake.new
然后我们来查看这个实例,会发现这个实例创建后就包含了@color=“red”
这个实例变量
cheese_cake
=> #<Cake:0x00007fd3ec11b738 @color="red">
同样构建器作为一个方法,也可以从外部传入参数,括号中color
就是参数
class Cake
def initialize(color)
@color = color
end
end
cheese_cake = Cake.new("green")
cheese_cake
=> #<Cake:0x00007fe898197bb0 @color="green">
实例变量和变量的差别是什么呢?其实差别就在于实例变量的作用域是它所在的类内部,同一个类下面的方法都可以去使用其他方法内的实例变量。而普通的变量值存在于方法之中,方法运行结束后,变量也就消失了,举个例子:
class Cake
def initialize(color)
@color = color
end
def change_color
@color = "green"
end
end
我们在类之中创建了一个新的方法change_color
,也给@color
赋值,这时再尝试用这个方法来队实例变量进行操作,我们创建了一个@color="red"
的cheese_cake实例,然后再调用方法change_color,更改了实例变量的值,再去查看cheese_cake就会发现它的实例变量值已经被改变为@color="gree"
cheese_cake = Cake.new("red")
cheese_cake
=> #<Cake:0x00007fe898197bb0 @color="red">
cheese_cake.change_color
cheese_cake
=> #<Cake:0x00007fcd2b2bc528 @color="green">
以上就是一些关于Ruby 的构建器和实例相关的基础知识。