is there any idea to change public definition to private definition by
using alias or some others…
On Dec 1, 4:41 am, Pokkai D. [email protected] wrote:
is there any idea to change public definition to private definition by
using alias or some others…
Slim2:~ phrogz$ qri private
Module#private
private => self
private(symbol, …) => self
With no arguments, sets the default visibility for subsequently
defined methods to private. With arguments, sets the named
methods
to have private visibility.
module Mod
def a() end
def b() end
private
def c() end
private :a
end
Mod.private_instance_methods #=> ["a", "c"]
Please RTFM in the future
Gavin K. wrote:
On Dec 1, 4:41 am, Pokkai D. [email protected] wrote:
Slim2:~ phrogz$ ri private
hey please understand my question correctly
that is ,
change public definition(public method) to private definition(private
method) by
using some ideas…
i want like this (ofcourse below is wrong)
class Cls1
def view
puts “from view”
end
def self.pp
alias :private view :public view
end
end
c1=Cls1.new
c1.view ----->from view
Cls1.pp
c1.view ----->undefined method `view’ for #Cls1:0xb7daa8b0
(NoMethodError)
On Dec 2, 2007, at 12:20 AM, Pokkai D. wrote:
i want like this (ofcourse below is wrong)
c1.view ----->from view
Cls1.pp
c1.view ----->undefined method `view’ for #Cls1:0xb7daa8b0
(NoMethodError)
I don’t believe you can do what I think you want with ‘alias’. Maybe
the following will work for you.
class Cls1
def view
puts "from view"
end
end
c1 = Cls1.new
c1.view
class Cls1
private :view
end
c1.view
from view
NoMethodError: private method ‘view’ called for #<Cls1:0x80e10at top
level
in untitled document at line 14
Regards, Morton
Morton G. wrote:
Regards, Morton
thats what i want .
thank you
Morton G. wrote:
On Dec 2, 2007, at 12:20 AM, Pokkai D. wrote:
i want like this (ofcourse below is wrong)
c1.view ----->from view
Cls1.pp
c1.view ----->undefined method `view’ for #Cls1:0xb7daa8b0
(NoMethodError)I don’t believe you can do what I think you want with ‘alias’. Maybe
the following will work for you.class Cls1 def view puts "from view" end end
from view NoMethodError: private method �view� called for #<Cls1:0x80e10at top level in untitled document at line 14c1 = Cls1.new
c1.viewclass Cls1
private :view
endc1.view
Regards, Morton
actualluy all ruby classes are not closed (we can add anything at any
time)
like as above
so how to close a ruby class ?
i thing freeze is used to protect modification for object.
like that what is used to protect modification for class ?
Pokkai D. wrote:
i thing freeze is used to protect modification for object.
like that what is used to protect modification for class ?
Classes are objects, too. SomeClass.freeze works just fine.
String.freeze
=> Stringclass String; def bla() end end
TypeError: can’t modify frozen class
See?
HTH,
Sebastian
Morton G. wrote:
On Dec 2, 2007, at 12:20 AM, Pokkai D. wrote:
You could also do something similar to to Morton’s solution, but on the
metaclass. This would me that you would only make that method private
for the specific instance of the object you’re currently working with.
You could also do it from an instance method (like in your example). Is
this what you were looking for?
class Stuff
def metaclass
class << self; self; end
end
def my_method
puts “hi from method!”
end
def pp
metaclass.instance_eval do
private :my_method
end
end
end
s = Stuff.new
s.my_method
s.pp
s.my_method