SORU
6 EKİM 2008, PAZARTESİ


Nasıl bir yöntem zamanında tanımlandığı bulmak için?

Bu çok geç, ama burada bir yöntem tanımlandığı bulabilirsiniz:

http://gist.github.com/76951

# How to find out where a method comes from.
# Learned this from Dave Thomas while teaching Advanced Ruby Studio
# Makes the case for separating method definitions into
# modules, especially when enhancing built-in classes.
module Perpetrator
  def crime
  end
end

class Fixnum
  include Perpetrator
end

p 2.method(:crime)
#<Method: Fixnum(Perpetrator)#crime>

Eğer Ruby varsa, 1.9 , source_location kullanabilirsiniz

require 'csv'

p CSV.new('string').method(:flock)
# => #<Method: CSV#flock>

CSV.new('string').method(:flock).source_location
# => ["/path/to/ruby/1.9.2-p290/lib/ruby/1.9.1/forwardable.rb", 180]

Bu yerel kod derlenmiş gibi her şeyi işe yaramaz unutmayın. Method class bazı zeki işlevlerden de, bu yöntem tanımlandığı dosya döndüren Method#owner gibi.

Ayrıca diğer cevap REE __file__ __line__ ve notlarına bakın, onlar kullanışlı da. EDİT: -- kurulmuştur

CEVAP
18 Mart 2009, ÇARŞAMBA


Bu çok geç, ama burada bir yöntem tanımlandığı bulabilirsiniz:

http://gist.github.com/76951

# How to find out where a method comes from.
# Learned this from Dave Thomas while teaching Advanced Ruby Studio
# Makes the case for separating method definitions into
# modules, especially when enhancing built-in classes.
module Perpetrator
  def crime
  end
end

class Fixnum
  include Perpetrator
end

p 2.method(:crime)
#<Method: Fixnum(Perpetrator)#crime>

Eğer Ruby varsa, 1.9 , source_location kullanabilirsiniz

require 'csv'

p CSV.new('string').method(:flock)
# => #<Method: CSV#flock>

CSV.new('string').method(:flock).source_location
# => ["/path/to/ruby/1.9.2-p290/lib/ruby/1.9.1/forwardable.rb", 180]

Bu yerel kod derlenmiş gibi her şeyi işe yaramaz unutmayın. Method class bazı zeki işlevlerden de, bu yöntem tanımlandığı dosya döndüren Method#owner gibi.

Ayrıca diğer cevap REE __file__ __line__ ve notlarına bakın, onlar kullanışlı da. EDİT: -- kurulmuştur

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • ItZWaffleS420

    ItZWaffleS42

    9 EYLÜL 2011
  • ::..ηєѕѕ мιχ..::

    ::..ηєѕѕ

    15 Aralık 2006