Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > method visibility VS accessibility

Reply
Thread Tools

method visibility VS accessibility

 
 
Thai Le
Guest
Posts: n/a
 
      02-04-2007
Hi guys,
I've done java for a few years and ruby is pretty new to me. In java, a
method has visibility(private, protected, public) and
accessibility(static, non-static); however, in ruby how can I declare
the method: "public static method1"? It seem that the default visibility
of a method is public in ruby, am i correct?
One morething is that java program starts from "public static main()".
What is the entry point to ruby program?
Thanks in advance

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Robert Klemme
Guest
Posts: n/a
 
      02-04-2007
On 04.02.2007 22:49, Thai Le wrote:
> I've done java for a few years and ruby is pretty new to me. In java, a
> method has visibility(private, protected, public) and


Actually there are four of them: you have to add "package" visibility to
the list.

> accessibility(static, non-static); however, in ruby how can I declare
> the method: "public static method1"? It seem that the default visibility
> of a method is public in ruby, am i correct?


Yes. Strictly speaking there are no static methods in Ruby. But it has
the concept of singleton methods that are defined for a single instance
only. And since classes are just ordinary objects you can define
instance methods of class objects and achieve basically the same as with
Java's static methods:

class Foo
def self.a_class_method
# ...
end

def an_instance_method
self.class.a_class_method
self.another_class_method
end
end

def Foo.another_class_method
# ...
end

> One morething is that java program starts from "public static main()".
> What is the entry point to ruby program?


The situation is a bit different because Ruby is interpreted. If you
want, you can view the root script you invoke as the body of main, i.e.,
code is executed top down. However, part of this execution are class,
method and constant definitions. Invocation arguments are accessible
via ARGV (and also ARGF which is a special shortcut which will read from
all files in ARGV). So, strictly speaking there is no equivalent of
Java's and C's "main" but the functionality is there.

Kind regards

robert
 
Reply With Quote
 
 
 
 
Kalman Noel
Guest
Posts: n/a
 
      02-05-2007
Robert Klemme:
> class Foo
> def self.a_class_method
> # ...
> end
>
> def an_instance_method
> self.class.a_class_method
> self.another_class_method

^^^^^^^^^^^^^^^^^^^^^^^^^
> end
> end
>
> def Foo.another_class_method
> # ...
> end


It seems that you did not write what you meant in the marked line.

Kalman
 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      02-05-2007
On 05.02.2007 11:58, Kalman Noel wrote:
> Robert Klemme:
>> class Foo
>> def self.a_class_method
>> # ...
>> end
>>
>> def an_instance_method
>> self.class.a_class_method
>> self.another_class_method

> ^^^^^^^^^^^^^^^^^^^^^^^^^
>> end
>> end
>>
>> def Foo.another_class_method
>> # ...
>> end

>
> It seems that you did not write what you meant in the marked line.


Correct. There is a "class." missing.

robert
 
Reply With Quote
 
Thai Le
Guest
Posts: n/a
 
      02-06-2007
Robert Klemme wrote:
> Yes. Strictly speaking there are no static methods in Ruby. But it has
> the concept of singleton methods that are defined for a single instance
> only. And since classes are just ordinary objects you can define
> instance methods of class objects and achieve basically the same as with
> Java's static methods:
>
> class Foo
> def self.a_class_method
> # ...
> end
>
> def an_instance_method
> self.class.a_class_method
> self.another_class_method
> end
> end
>

So if i have a class method, I can invoke that method from anywhere by
using class name like: Foo.a_class_method() without declaring public for
that method?

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
gga
Guest
Posts: n/a
 
      02-07-2007
On 6 feb, 16:22, Thai Le <(E-Mail Removed)> wrote:
>
> So if i have a class method, I can invoke that method from anywhere by
> using class name like: Foo.a_class_method() without declaring public for
> that method?


Yes. You can use either of:

Class::method
or
Class.method


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
virtual method lookup and accessibility Jay Foad Java 5 08-12-2011 09:46 PM
Private visibility for class method lianliming Ruby 1 11-03-2008 07:31 AM
visibility, declarative region, scope, validity, introduction and accessibility Steven T. Hatton C++ 1 12-13-2006 06:29 AM
Module#private_filter: critique of dynamic method visibility transfire@gmail.com Ruby 0 07-16-2006 01:59 AM
method visibility Bob Aman Ruby 3 05-29-2005 09:03 PM



Advertisments