Żeby było jasne - ten kod działa doskonale - code with procDzwoniąc instance_eval (& lambda) przekazać bieżący kontekst dostaje błąd „zła liczba argumentów”
ale jeśli zamiast zmienić Proc.new lambda, jestem otrzymuję błąd
ArgumentError: wrong number of arguments (1 for 0)
Może to dlatego instance_eval chce przekazać siebie jako param, i traktuje jako metoda lambda i nie akceptuje nieznanych params?
Istnieją dwa przykłady - pierwszy robocze:
class Rule
def get_rule
Proc.new { puts name }
end
end
class Person
attr_accessor :name
def init_rule
@name = "ruby"
instance_eval(&Rule.new.get_rule)
end
end
drugie nie brzmi:
class Rule
def get_rule
lambda { puts name }
end
end
class Person
attr_accessor :name
def init_rule
@name = "ruby"
instance_eval(&Rule.new.get_rule)
end
end
Dzięki
Czy to nie 'p.get_rule' zamiast' p.init_rule'? – artificis