Ruby 继承父类有参数如何实现?

Published 05-05-2019 20:36:49

英文原文 Implementing inheritance with params: CreateProducts < ActiveRecord::Migration[5.0] - Ruby Blog

Rails 5 中可以看到migration定义中会有版本参数 ActiveRecord::Migration[5.0]

原理是只要< 后边返回的是类对象就可以

基本继承

class Human; end

class Man < Human
end

也可以这样,foo 为 Human 类

class Human; end

foo = Human

class Man < foo 
end

类似的

class Human; end

def parent_class
  Human
end

class Man < parent_class
end

实现带参数版本

class Human
  def self.[](version)
    puts version
    self
  end
end

class Man < Human[:basic]
end

会打印 basic,Human[:basic] 表示调用类方法Human.[] 参数是 :basic