Ruby学习札记(四) 类 函数 代码块

1、关键字:

追加类——类中的方法可在的同名类文件中追加

嵌套类——类中可嵌套类,也可在外部定义嵌套类

特殊类——可为对象添加单独的类,以定义特殊的方法和属性(相应的有特殊方法)

类方法——顾名思义,通过类方式调用的方法,非对象方法

#追加类
class Animal
  def put
    puts "这是Put方法"
  end
  def Animal.show
    puts "这是Animal类的Show方法"
  end
end

class Animal
  def show
    puts "这是show方法"
  end
end

a=Animal.new
a.put
a.show

#嵌套类
class Animal::Head
  def put
    puts "这是Head类的put方法"
  end
end

h=Animal::Head.new
h.put

#特殊类
class<<h
  def put
    puts "这是特殊类里的Put方法"
  end
end

h.put

def h.show
  puts "我是h的Show方法"
end

puts h.show
puts Animal.show

2、在程序文件顶层定义的实例变量对整个应用程序中顶层的表达式和函数都有效;

在类和模块中定义的实例变量可以被当前类或模块中的表达式访问;

在类方法中声明的实例变量可以被当前类下的所有方法使用;  

类变量可以在各个类之间共享数据;

class Person
  def setName(name)
    @name=name
  end
  
  def setAge(age)
    @age=age
  end
  
  def setIsMale(isMale)
  @isMale=isMale
  end
  def say
    sex=@isMale?"小男孩":"小女孩"
    puts "大家好,我叫#{@name},我是一个#{@sex},我今年#{@age}岁"
  end
end

z=Person.new
z.setName("小张")
z.setAge(5)
z.setIsMale(true)
z.say

3、属性定义标识符

#attr:根据布尔型数据key的值,定义一个可读写的属性;
#attr_reader:定义一个或多个只读的属性;
#attr_writer:定义一个或多个只写的属性;
#attr_accessor:定义一个或多个可以读写的属性;
class Roadster
  def init
    @brand="BYD"
    @color="黄色"
    @weight="1800KG"
    @F_zero="210km/h"
  end

  def brand
    @brand
  end
  def color
    @color
  end
  def weight
    @weight
  end
  def F_zero
    @F_zero
  end
  attr_accessor:color
  attr_reader:weight,:F_zero
end
def showCar(car)
  puts "这辆车的品牌是:"+car.brand
  puts "这辆车的颜色是:"+car.color
  puts "这辆车的最高时速是:"+car.F_zero
  puts "这辆车的车重是:"+car.weight
end

roadster=Roadster.new
roadster.init
showCar(roadster)
roadster.color="红色"
showCar(roadster)

>>>>>>

这辆车的品牌是:BYD
这辆车的颜色是:黄色
这辆车的最高时速是:210km/h
这辆车的车重是:1800KG
这辆车的品牌是:BYD
这辆车的颜色是:红色
这辆车的最高时速是:210km/h
这辆车的车重是:1800KG

4、代码块

语法:

{
  #代码块内容  
}

或者

do
    #代码块内容
end

e.g.

def say
  puts "Hello"
  yield
  puts "Bye"
end

say do
  puts "What U say?"
end
>>>>>>

Hello
What U say?
Bye

5、继承与构造方法

#直接上代码了
class Bird def initialize(leg,wing) @leg=leg @wing=wing end end class Chick<Bird def initialize(color) super(2,2) @color=color end def show puts "这只#@color 色的小鸡有#@wing 只翅膀、 #@leg 条腿" end end chick=Chick.new "黄" chick.show

  

  

  

  

  

  

  

原文地址:https://www.cnblogs.com/ranlx/p/3191007.html