Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Ruby Diary #13: Overloading dei metodi in Ruby

Come emulare l'overloading di un metodo in Ruby.
Come emulare l'overloading di un metodo in Ruby.
Link copiato negli appunti

Java ed altri linguaggi molto tipicizzati consentono agevolmente di eseguire l'overloading dei metodi. In poche parole, è possibile definire uno stesso metodo più volte variando il tipo ed il numero di parametri della chiamata.

Ecco un esempio tratto dal libro Thinking in Java.

//: OverloadingOrder.java
// Overloading based on the order of
// the arguments.
public class OverloadingOrder {
  static void print(String s, int i) {
    System.out.println(
      "String: " + s +
      ", int: " + i);
  }
  static void print(int i, String s) {
    System.out.println(
      "int: " + i +
      ", String: " + s);
  }
  public static void main(String[] args) {
    print("String first", 11);
    print(99, "Int first");
  }
} ///:~

Ruby non supporta l'overloading, o meglio, come per le classi astratte non lo supporta nativamente ma è possibile emularlo.

Definendo un metodo con un unico parametro (*args), il metodo potrà  essere richiamato con un numero arbitrario di parametri. Internamente potremo così calcolare il numero ed il tipo di parametri e gestire correttamente il funzionamento del metodo.

def overloaded_method(*args)
    if args.size < 2
        #
    else
        #
    end
end

Per approfondimenti vi lascio al tutorial Ruby Overloading Methods pubblicato su RubyLearning.com.

Esiste infine una interessante alternativa di una libreria chiamata overload che permette di eseguire qualcosa del genere

require "overload"
class Foo
   def initialize
      puts "No args"
   end
   overload(:initialize)
   def initialize(arg)
      puts "One arg (Fixnum)"
   end
   overload(:initialize, Fixnum)
   def initialize(arg)
      puts "One arg (String)"
   end
   overload(:initialize, String)
end

Ti consigliamo anche