如何在ruby中获取调用者对象名称?

1 ruby object

通常,从不同的对象A,B,C调用相同的方法X.是否可以从方法X内部获取调用者对象(A,B,C)的名称

例如:

class Sample
  def method
    # what needs to be done here?
  end
end

n1 = Sample.new
n2 = Sample.new

n1.method #=> expected output is to print n1
n2.method #=> expected output is to print n2
Run Code Online (Sandbox Code Playgroud)

Ste*_*fan 5

不,这不起作用.成像如下:

n1 = Sample.new
n2 = n1

n2.method #=> ambiguous, both n1 and n2 would be valid
Run Code Online (Sandbox Code Playgroud)

您可以为您的实例指定一个名称:

class Sample
  attr_accessor :name
end

n1 = Sample.new
n1.name = :n1

n2 = Sample.new
n2.name = :n2


n1.name #=> :n1
n2.name #=> :n2
Run Code Online (Sandbox Code Playgroud)