加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – mixins应该对他们的包括类进行假设吗?

发布时间:2020-12-17 04:02:45 所属栏目:百科 来源:网络整理
导读:我找到了一个mixin的例子,它假设包含类的实例变量.像这样的东西: module Fooable def calculate @val_one + @val_two endendclass Bar attr_accessor :val_one,:val_two include Fooableend 我发现支持和反对这是一个好习惯的论据.显而易见的替代方法是将va
我找到了一个mixin的例子,它假设包含类的实例变量.像这样的东西:

module Fooable
  def calculate
    @val_one + @val_two
  end
end

class Bar
  attr_accessor :val_one,:val_two
  include Fooable
end

我发现支持和反对这是一个好习惯的论据.显而易见的替代方法是将val_one和val_two作为参数传递,但这似乎并不常见,并且拥有更多参数化方法可能是一个缺点.

关于mixin对阶级状态的依赖,是否存在传统观点?从实例变量中读取值与将它们作为参数传递有什么优点/缺点?或者,如果您开始修改实例变量而不是仅仅读取它们,答案是否会改变?

解决方法

在模块中假设一些关于包含/预先包含它的类的属性,这根本不是问题.通常这样做.实际上,Enumerable模块假定包含/ prepending的类具有每个方法,并且具有许多依赖于它的方法.同样,Comparable模块假定包含/前置类具有< =>.我不能立即想出一个实例变量的例子,但是关于这一点的方法和实例变量之间没有关键的区别;关于实例变量应该说同样的.

不使用实例变量传递参数的缺点是您的方法调用将是冗长且不太灵活的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读