草庐IT

object_class

全部标签

Ruby:Object.to_a 替换

我需要将传入的参数(单个对象或集合)转换为数组。我不知道论点是什么。如果它已经是一个数组,我想保留它,否则从中创建一个单元素数组。我希望同时允许method(:objs=>obj)和method(:objs=>[obj1,obj2])/p>这似乎是最好的方式(Array#to_a返回self):arg=arg.to_a但ruby​​文档说Object#to_a很快就会过时。有方便的更换吗?还有比这更简洁的吗?arg=arg.respond_to?(:to_a)?arg.to_a:[arg] 最佳答案 使用方法Kernel#Array

ruby - 我可以或应该通过 ruby​​ 中的 object_id 属性找到一个对象吗?

当我创建一个新对象时,假设o=Object.new这个对象有一个id,o.object_id#=>########我还使用Object类制作了其他几个对象。使用object_id属性让ruby​​找到对象“o”的最佳方法是什么?我在想类似的事情search_id=o.object_idsearch_result=Object.find(search_id)其中“search_results”是对应于“search_id”的对象。此外,我肯定会欣赏一种完全不同的方法来索引对象并通过guid或其他方式检索它们。非常感谢!哈,好吧,我想我真的只需要在数据库的上下文中考虑这个问题,只需使用My

Ruby 的 def 和 instance_eval 与 class_eval

我正在阅读ProgrammingRuby1.9的元编程部分,但我无法理解class_eval之间内部发生了什么|/class_exec与instance_eval/instance_exec.首先,我的理解是def在self的方法表中添加一个方法(类对象):classAputsself#=>Adeffoo;42;end#addedtothemethodtableofself,sobecomesaninstancemethodendA.new.foo#=>42如果我们使用class_eval,我们得到相同的行为:A.class_evaldoputsself#=>Adefbar;42;en

ruby - 了解 ruby​​ .class 和 .ancestors 方法

我有一个定义如下的类classOrderendputsOrder.class#->ClassputsOrder.ancestors#->[Order,Object,Kernel,BasicObject]putsOrder.class.ancestors#->[Class,Module,Object,Kernel,BasicObject]我的问题是为什么Order.ancestors在祖先链中不显示“类”或“模块”?既然Order是类Class的一个对象,Order不应该显示Class的所有祖先吗? 最佳答案 为此,您需要了解Ruby

ruby - 有人可以解释 Class.superclass.class.superclass 悖论吗?

这可能根本不是悖论,但从新手的角度来看,确实如此。>Class.superclass=>Module>Class.superclass.class=>Class>Class.superclass.class.superclass=>Module所以一个类的父类是模块,但模块是一个类?我怎样才能理解这一点? 最佳答案 TL;DR:模块是类的父类(superclass)。模块是类的一个实例。让我试着更清楚地解释一下。请原谅我手写的图——我没有什么花哨的绘图软件。Ruby中的每个类都有1个父类(superclass)*。*BasicObj

ruby - Ruby 1.9 中的 ARGF.class 是什么?

在Ruby1.8.7中,thedocumentation不在类和模块下列出ARGF,并且ARGF不是类或模块:ARGF.class#=>Object在Ruby1.9.3中,thedocumentation在类和模块下有ARGF,但我看到了这个:ARGF.class#=>ARGF.classARGF.superclass#=>NoMethodError:undefinedmethod`superclass'forARGF:ARGF.classARGF.class.superclass#=>Object为什么Ruby1.9文档将ARGF放置为类,而实际类是其他东西?或者它们是同一回事?AR

ruby - 如何调用父类(super class)方法

我有两个类A和B。B类重写A类的foo方法。B类有一个bar方法,我想在其中调用父类(superclass)的foo方法。这种调用的语法是什么?classAdeffoo"hello"endendclassB对于类方法,我可以通过在类名前显式添加前缀来调用继承链中的方法。我想知道实例方法是否有类似的习语。classPdefself.x"x"endendclassQ编辑我的用例很一般。对于特定情况,我知道我可以使用alias技术。这是Java或C++中的常见功能,所以我很想知道是否可以在不添加额外代码的情况下执行此操作。 最佳答案 在R

ruby - each_with_object 应该如何工作?

我正在尝试弄清楚应该如何使用each_with_object。我有一个不起作用的求和示例:>(1..3).each_with_object(0){|i,sum|sum+=i}=>0我假设结果是6!我的错误在哪里? 最佳答案 each_with_object不适用于整数等不可变对象(immutable对象)。(1..3).each_with_object(0){|i,sum|sum+=i}#=>0这是因为each_with_object迭代一个集合,将每个元素和给定的对象传递给block。它不会在每次迭代后更新对象的值并返回原始给定的

ruby - 在 Ruby 中,为什么 inspect() 会打印出某种与 object_id() 给出的不同的对象 ID?

p函数在打印出对象时,可能会给出一个ID,与object_id()给出的不同。不同数字的原因是什么?更新:0x4684abc不同于36971870,即0x234255E>>a=Point.new=>#>>a.object_id=>36971870>>a.__id__=>36971870>>"%X"%a.object_id=>"234255E" 最佳答案 inspect的默认实现调用了to_s的默认实现,它只是直接显示对象的十六进制值,如Object#to_s中所见docs(单击方法描述以显示来源)。同时,object_id实现的C源

ruby-on-rails - rails 如果 object.nil?那么魔术 '' 在意见?

这就是其中之一,可能太简单了,我永远找不到它,因为其他人都已经知道了。我有一些对象,我必须在我的View中检查是否为nil,所以我不会取消引用nil:或者我可以做这个变体:所以这没问题……对于大多数语言。但我觉得如果这是我能做的最好的,我仍然缺少一些Shiny的ruby或rails。 最佳答案 关于: 关于ruby-on-rails-rails如果object.nil?那么魔术''在意见?,我们在StackOverflow上找到一个类似的问题: https:/