我是新手,学习ruby.希望能够更好地理解所提出的问题.我不明白使用类似的mixin和可枚举的mixin.我的意思是当我们需要使用它们时,我们不会在课堂中包含这些,对吧?如果我们想要比较两个对象,我们只需写x>年.那么明确使用它们的用途是什么?
解决方法
好问题阿卡什!
有时两个对象的比较并不“简单”!如果你有狗课怎么办?你如何比较两个Dog实例?什么应该是基于比较?是否足以比较他们的名字?他们的品种?他们的DNA?这真的取决于你.当你可以在模型中包含Comparable并自己实现必要的最小函数来定义是什么使两个Dog实例相同时.您定义比较.一旦定义了< =>在模块中比较器,然后可以比较您的对象是否相等或者进行排序或排序,因为ruby将知道如何将一个实例与另一个实例进行比较.
类似地,包括Enumerable模块允许您的类迭代其实例的集合.在类中实现每个方法后,您将获得类中可用的整个Enumerable模块的方法.您可以在课堂上使用地图/收集等方法.
class Dog include Enumerable attr_accessor :puppies,:name def initialize(name) @name = name @puppies = [] end def each(&block) @puppies.each do |puppy| puts "yielding #{puppy}" yield(puppy) puts "just yielded #{puppy}" end end end tommy = Dog.new("tommy") tommy.puppies = ["julie","moti","husky"] tommy.each do |p| puts p end big_puppies = tommy.map{|x| x.titleize }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。