Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该如何在Ruby中继承变量?_Ruby_Oop - Fatal编程技术网

我应该如何在Ruby中继承变量?

我应该如何在Ruby中继承变量?,ruby,oop,Ruby,Oop,我正在努力实现: 类模型 表=未设置 self.getid sql=从{table}中选择*,其中id={id} 终止 终止 这是我的通用模型类,带有一个示例函数 类用户模型 表=用户 终止 我希望将通用sql函数保留在父类中,因为它们不是每个实例都需要的。每个类声明都需要在运行get函数时使用的表 关于实例变量,您不需要实例[sic]调用get的类。类变量由层次结构中的类共享,因此这也不起作用 我应该如何使用类变量?我该怎么做?在java中,每个类在构造函数上方分配一个受保护的变量。您可以这样

我正在努力实现:

类模型 表=未设置 self.getid sql=从{table}中选择*,其中id={id} 终止 终止 这是我的通用模型类,带有一个示例函数

类用户模型 表=用户 终止 我希望将通用sql函数保留在父类中,因为它们不是每个实例都需要的。每个类声明都需要在运行get函数时使用的表

关于实例变量,您不需要实例[sic]调用get的类。类变量由层次结构中的类共享,因此这也不起作用


我应该如何使用类变量?我该怎么做?在java中,每个类在构造函数上方分配一个受保护的变量。

您可以这样做。在模型类上引发硬错误将是确保表在子类上实现的另一个好处


而且,通过使用该类,我从未想到过这一点!非常聪明,谢谢你提供的解决方案。所以我实现了这个,它可以正常工作,但是我现在不知道如何处理非类方法需要访问表函数的情况。@Gibbo每个实例都可以通过self.class访问自己的类。因此,您可以通过self.class.table从实例方法调用您自己类的table方法。非常感谢我的朋友,这工作正常。希望我能从中进一步学习,帮助我的代码干涸。
class Model
  class << self
    def get(id)
      "SELECT * FROM #{table} WHERE id = #{id}"
    end

    private

    def table
      raise NotImplementedError
    end
  end
end

class User < Model
  class << self
    private

    def table
      "users"
    end
  end
end