tags:

views:

77

answers:

2

In Java, a 'static method' would look like this:

class MyUtils {
    . . .
    public static double mean(int[] p) {
        int sum = 0;  // sum of all the elements
        for (int i=0; i<p.length; i++) {
            sum += p[i];
        }
        return ((double)sum) / p.length;
    }
    . . .
}

// Called from outside the MyUtils class.
double meanAttendance = MyUtils.mean(attendance);

What's the equivalent 'Ruby way' of writing a 'static method'?

+5  A: 

Use self:

class Horse
  def self.say
    puts "I said moo."
  end
end

Horse.say
Anders Oestergaard Jensen
wow never met a horse that said moo :P
Nathan W
It is a very special horse :)
Anders Oestergaard Jensen
+1  A: 

Anders' answer is correct, however for utility methods like mean you don't need to use a class, you can put the method in a module:

module MyUtils
  def self.mean(values)
    # implementation goes here
  end
end

The method would be called in the same way:

avg = MyUtils.mean([1,2,3,4,5])
mikej