SORU
27 ŞUBAT 2010, CUMARTESİ


Ruby, nasıl bir yöntem "foo eğer kontrol edebilirim=()&; tanımlanır?"

Ruby'de=foo metodu(bar) tanımlayabilirim:

irb(main):001:0> def foo=(bar)
irb(main):002:1>   p "foo=#{bar}"
irb(main):003:1> end
=> nil

Şimdi Eğer tanımlı olup olmadığını kontrol etmek istiyorum

irb(main):004:0> defined?(foo=)
SyntaxError: compile error
(irb):4: syntax error, unexpected ')'
 from (irb):4
 from :0

Burada kullanmak için doğru sözdizimi nedir? Kaçmak için bir yol "= böyle ayrıştırıldı ve doğru bir şekilde tanımlanmış geçti bu kadar mı?" foo olmalı sanırım operatör.

CEVAP
27 ŞUBAT 2010, CUMARTESİ


Sorun foo= yöntem görevlerde kullanılmak üzere tasarlanmıştır. Neler olup bittiğini görmek için aşağıdaki şekilde defined? kullanabilirsiniz:

defined? self.foo=()
#=> nil
defined? self.foo = "bar"
#=> nil

def foo=(bar)
end

defined? self.foo=()
#=> "assignment"
defined? self.foo = "bar"
#=> "assignment"

Karşılaştırın:

def foo
end

defined? foo
#=> "method"

Eğer foo= yöntem tanımlanmış olup olmadığını test etmek, respond_to? yerine kullanmanız gerekir:

respond_to? :foo=
#=> false

def foo=(bar)
end

respond_to? :foo=
#=> true

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bmarian22

    bmarian22

    22 Aralık 2007
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • Michelle Phan

    Michelle Pha

    18 Temmuz 2006