Tag: 对象

Ruby中的对象赋值

来自c ++背景我很好奇Ruby中的对象赋值。 应对以下对象分配进行哪些考虑(如果有): class MyClass attr_accessor :a, :b def initialize(a, b) @a = a @b = b end def some_method puts “#{self.a} #{self.b}” end end m = MyClass.new(“first”, “last”) n = MyClass.new(“pizza”, “hello”) q = n q.some_method

对象分配和指针

我对Ruby中的对象赋值和指针有点困惑,并编写了这个代码片段来测试我的假设。 class Foo attr_accessor :one, :two def initialize(one, two) @one = one @two = two end end bar = Foo.new(1, 2) beans = bar puts bar puts beans beans.one = 2 puts bar puts beans puts beans.one puts bar.one 我曾经假设当我将bar分配给bean时,它会创建一个对象的副本,而修改一个不会影响另一个。 唉,输出显示不然。 ^_^[jergason:~]$ ruby test.rb # # # # 2 2 我相信数字与对象的地址有关,而且对于bean和bar都是相同的,当我修改bean时,bar也会被改变,这不是我所期望的。 看来我只是创建一个指向对象的指针,而不是它的副本。 在分配时复制对象而不是创建指针需要做什么? 使用Array类进行的测试也显示了一些奇怪的行为。 foo […]

一切都是ruby的对象吗?

ruby中的一切都是对象吗? 这包括Fixnum吗?

Ruby在while循环中忘记了局部变量?

我正在处理一个基于记录的文本文件:所以我正在寻找一个构成记录开头的起始字符串:没有记录结束标记,所以我使用下一条记录的开头来划分最后的记录。 所以我已经构建了一个简单的程序来实现这一点,但是我看到一些让我感到惊讶的事情:看起来Ruby似乎忘记了局部变量 – 或者我发现了编程错误? [虽然我不认为我有:如果我在循环之前定义变量’message’我没有看到错误]。 这是一个简单的示例,其中包含示例输入数据和注释中的错误消息: flag=false # message=nil # this is will prevent the issue. while line=gets do if line =~/hello/ then if flag==true then puts “#{message}” end message=StringIO.new(line); puts message flag=true else message << line end end # Input File example: # hello this is a record # this is also part of […]

如何破坏Ruby对象?

假设有一个简单的对象,如: object = Object.new 据我所知,这会在内存(RAM)中创建对象。 有没有办法从RAM中删除此对象?

在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”