ruby类

常用命令


irb中引入ruby文件
1
load 'point.rb'

获得一个对象的类

1
p.class

获得一个对象的所有方法

1
p.methods

获得一个对象的所有方法,不显示从祖先继承的方法

1
p.methods(false)

显示一个类的祖先

1
Point.ancestors

创建类


1
2
3
class Point

end

默认执行的初始化方法,构造方法


1
2
3
4
5
class Point
def initialize
puts self
end
end

带参数的构造方法


1
2
3
4
5
class Point
def initialize(x, y)
@x, @y = x, y
end
end

方法有几个参数必须传入几个参数,除非设置了默认值的参数可以不传

1
2
3
4
5
class Point
def initialize(x, y=2)
@x, @y = x, y
end
end

1
2
3
4
5
class Point
def initialize(x=0, y=0)
@x, @y = x, y
end
end

变量的类型

实例变量 instance variable


1
@x

类变量 class variable


1
@@x

全局变量 global variable


1
$x

局部变量 local variable


1
x

getter setter方法


1
2
3
4
5
6
7
8
9
class Point
attr_accessor :x # getter setter
attr_reader :y # getter
attr_writer :x #setter
def initialize(x = 0, y = 0, z = 0)
@x, @y, @z = x, y, z
puts x, y, z
end
end

符号方法


1
2
3
4
5
6
7
8
9
10
11
12
class Point
attr_accessor :x, :y, :z

def initialize(x = 0, y = 0, z = 0)
@x, @y, @z = x, y, z
end

def +(p2)
Point.new(@x + p2.x, @y + p2.y, @z + p2.z)
end

end

类方法

在方法前加 self.


1
2
3
4
5
6
7
8
9
10
11
class Point
attr_accessor :x, :y, :z

def initialize(x = 0, y = 0, z = 0)
@x, @y, @z = x, y, z
end

def self.first_quadrant?(point)
point.class == Point && point.x > 0 && point.y > 0
end
end

文章目录
  1. 1. 常用命令
  2. 2.
    1. 2.1. 创建类
    2. 2.2. 默认执行的初始化方法,构造方法
    3. 2.3. 带参数的构造方法
    4. 2.4. 变量的类型
      1. 2.4.1. 实例变量 instance variable
      2. 2.4.2. 类变量 class variable
      3. 2.4.3. 全局变量 global variable
      4. 2.4.4. 局部变量 local variable
    5. 2.5. getter setter方法
    6. 2.6. 符号方法
    7. 2.7. 类方法
      1. 2.7.1. 在方法前加 self.
|