« Return to Thread: Defining a function inside a function. Whats this feature ? How to use inside a class ?

Re: Defining a function inside a function. Whats this feature ? How to use inside a class ?

by botp :: Rate this Message:

Reply to Author | View in Thread

On Jan 8, 2008 8:15 PM, Sur <sur.max@...> wrote:
> person.author # => I am author
> person.reader # => I am reader
>
> And it works fine with any hierarchy.


try it further, like

botp@jedi-hopeful:~$ irb
irb(main):001:0> def person
irb(main):002:1>  def author
irb(main):003:2>    p "I am author"
irb(main):004:2>  end
irb(main):005:1>  def reader
irb(main):006:2>    p "I am reader"
irb(main):007:2>  end
irb(main):008:1> end
=> nil
irb(main):009:0> person
=> nil
irb(main):010:0> author
"I am author"
=> nil
irb(main):011:0> nil.reader
"I am reader"
=> nil
...
irb(main):020:0> nil.methods.grep /reader/
=> ["reader"]
irb(main):021:0> 1.methods.grep /reader/
=> ["reader"]
irb(main):022:0> "string".methods.grep /author/
=> ["author"]

>
> The same thing doesn't seem to work inside a class.
>

it does, just try it...

sometimes, i play with this behavior to create a second initializer or
a eureka/latemethod definer :)

kind regards -botp

 « Return to Thread: Defining a function inside a function. Whats this feature ? How to use inside a class ?