Here’s a classic fizzbuzz in Ruby:
class PrimeChecker
def print_em
1.upto 100 do |fizzbuzz|
if (fizzbuzz % 2) == 0 && (fizzbuzz % 5) == 0
puts "fizzbuzz: " + fizzbuzz.to_s
elsif (fizzbuzz % 5) == 0
puts "fizz: "+fizzbuzz.to_s
elsif (fizzbuzz % 2) == 0
puts 'buzz: ' + fizzbuzz.to_s
else
puts "-" + fizzbuzz.to_s
end
end
end
end
PrimeChecker.print_em
When I execute this, I get this error:
undefined method ‘print_em’.
I change the method to self.print_em and it works. Does this mean it’s a class method (I think so)? Was the method “not found” before because I can only call such methods in a class on actual instances of the object? If I wanted it to be a instance method what is the syntax for that? I’m trying to understand Ruby, classes and methods better.
Class methods are just that: called on the class. Whereas instance methods are called on an instance of that class. An example is more useful:
Note that “class methods” in Ruby are actually methods on the class object’s singleton. This is a rather difficult concept to explain, and you can read more about it if you’d like.