gpt4 book ai didi

ruby - Ruby 中的多重继承

转载 作者:数据小太阳 更新时间:2023-10-29 08:09:24 25 4
gpt4 key购买 nike

Ruby 中的多重继承是通过包含模块来模拟的,但是不可能直接从模块(不是类)继承属性。我提出的解决方案是在模块初始化时定义属性(下面的代码)。与下面的代码(继承方法和属性)相比,是否有更好的实现多重继承的方法?

module MyCustomMixin
attr_accessor :a

def initialize
self.a = 1
end

def b
"something"
end
end

class MyCreateView < CreateView
include MyCustomMixin
end

class MyReadView < ReadView
include MyCustomMixin
end

class MyUpdateView < UpdateView
include MyCustomMixin
end

class MyDeleteView < DeleteView
include MyCustomMixin
end

最佳答案

问题是,这在技术上是可行的,但它需要一些看起来不太漂亮的技巧(尤其是使用#initialize)——这是理所当然的.如果唯一的目的是防止代码重复,我不建议以这种方式编写代码。

所以,考虑:

  • 为什么每个 FooView 都有一个 MyFooView 版本?只是为了包含 mixins 吗?
  • 也许所有的 View 都有一个共同的父级,您可以向其添加此 mixin?
  • mixin 是否包含用于 View 之外的功能?为什么不直接将它添加到父 View 中呢?
  • 如果 mixin 真的独立于 View 类,为什么它本身不只是一个类,这样每个 View 都会拥有它的一个实例?

关于ruby - Ruby 中的多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17569277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com