On Thu, Feb 24, 2011 at 2:59 PM, 7stud -- <bbxx789_05ss / yahoo.com> wrote:
> class DataSource
>  ¨Âåæ çåôßãðõßéîæï
> cpu8001"
>  ¨Âîä
>  ¨Âåæ çåôßãðõßðòéã> 01
>  ¨Âîä
>
>  ¨Âåæ çåôßíïõóåßéîæï
> mouse241"
>  ¨Âîä
>  ¨Âåæ çåôßíïõóåßðòéã> 0
>  ¨Âîä
> end
>
> DataSource.new.methods.grep(/^get_(.*?)_info$/) do |meth|
>  ¨Âõô¢­­­£ûíåôèý­­­> end
>
> --output:--
> ---get_cpu_info---
> ---get_mouse_info---
>
>
> class Computer
>  ¨Âåæ éîéôéáìéúå¨áîßéääáôáßóïõòãå©
>  ¨Âéä áîßé>  ¨Âäó äáôáßóïõòã>
>  ¨Âäó®íåôèïäó®çòåð¨¯Þçåôߨ®«¿©ßéîæï¤¯äï
>
>  ¨Âõô¢­­¾£û¤±ý¼­­­¢
>
>  ¨Âïíðõôåò®óåî䨺äåæéîåßíåôèïä¬ ¤±®ôïßóùí© äï
>  ¨Âõô¢ªªªª¢ ¤± ¢ªªªª¢ £ªªªÎÉÎÉÎÉÎÉ>
>  ¨ÂîæÀäó®óåî䨢çåôߣû¤±ýßéîæï¢®ôïßóùí>  ¨Âòéãå Àäó®óåî䨢çåôߣû¤±ýßðòéã墮ôïßóùí©
>
>  ¨Âìåòô ¢¢
>  ¨Âðòéã±°>  ¨Âìåòô ¢ª>  ¨Âîä
>
>  ¨Âõô¢£ûáìåòô£ûéîæï£ûðòéãåý> end
>  ¨Âîä
>  ¨Âîä
>
> end
>
>
>
> comp1 = Computer.new(1, DataSource.new)
> puts comp1.mouse
>
>
> --output:--
> Line 32:in `+': can't convert nil into String (TypeError)
>  ¨Âòïô®ò⺳²ºéî àíïõóå>  ¨Âòïô®ò⺵
I'm not sure of the specifics, but $1 doesn't persist outside of the
block created in the grep statement. When you call comp1.mouse, that's
no longer within that block -- the method was defined in it, but once
it was made a method it took on an existence of its own.