I have a script with those two following classes:
class String
def to_b
[“true”].include?(self.downcase)
end
end
class HereIWantUseToB
“string”.to_b
end
Ok, that works fine, the to_b method can be “seen” by
HereIWantToUseToB class. But I wanted to those two classes inside
another class, or module, like this:
class Everything
The two classes described above are here
end
module Everything
The two classes described above are here
end
Anyway, for both cases I have the message “NoMethodError: undefined
method `to_b’ for string.” What is the scope point in here, what is
the best way solve that so ?
2010/5/4 Eduardo Mucelli R. Oliveira [email protected]:
I have a script with those two following classes:
class String
def to_b
[“true”].include?(self.downcase)
end
end
Why are you doing it so complicated? Why not just this:
def to_b
“true” == downcase
end
class HereIWantUseToB
“string”.to_b
end
You are using #to_b on a string constant that is not attached anywhere
(e.g. as class or instance variable). What exactly are you trying to
do?
end
Anyway, for both cases I have the message “NoMethodError: undefined
method `to_b’ for string.” What is the scope point in here, what is
the best way solve that so ?
Please show the complete code that leads to the error.
Kind regards
robert
On Tue, May 4, 2010 at 9:55 AM, Eduardo Mucelli R. Oliveira
[email protected] wrote:
I have a script with those two following classes:
class String
def to_b
[“true”].include?(self.downcase)
end
end
This opens up the system class String (or ::String if you prefer to
explicitly specify the outer scope) and adds an instance method
available to any instance of ::String
The two classes described above are here
end
module Everything
The two classes described above are here
end
Either
class Everything
class String
#…
end
end
or
module Everything
class String
#…
end
end
creates a new class Everything::String, which is unrelated to ::String
Anyway, for both cases I have the message “NoMethodError: undefined
method `to_b’ for string.” What is the scope point in here,
A string literal, like "string’, or “foo” will ALWAYS be an instance
of ::String, and never an instance of Everything::String
–
Rick DeNatale
Blog: http://talklikeaduck.denhaven2.com/
Github: rubyredrick (Rick DeNatale) · GitHub
Twitter: @RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale
On 4 maio, 13:49, Rick DeNatale [email protected] wrote:
end
The two classes described above are here
or
method `to_b’ for string." What is the scope point in here,
WWR:http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn:http://www.linkedin.com/in/rickdenatale
Thanks, that solved my scope doubt.