Ruby - Méthodes

Les méthodes Ruby sont très similaires aux fonctions de tout autre langage de programmation. Les méthodes Ruby sont utilisées pour regrouper une ou plusieurs instructions répétables en une seule unité.

Les noms de méthode doivent commencer par une lettre minuscule. Si vous commencez un nom de méthode par une lettre majuscule, Ruby peut penser qu'il s'agit d'une constante et par conséquent peut analyser l'appel de manière incorrecte.

Les méthodes doivent être définies avant de les appeler, sinon Ruby lèvera une exception pour l'invocation de méthode non définie.

Syntaxe

def method_name [( [arg [= default]]...[, * arg [, &expr ]])]
   expr..
end

Ainsi, vous pouvez définir une méthode simple comme suit -

def method_name 
   expr..
end

Vous pouvez représenter une méthode qui accepte des paramètres comme celui-ci -

def method_name (var1, var2)
   expr..
end

Vous pouvez définir des valeurs par défaut pour les paramètres, qui seront utilisées si la méthode est appelée sans passer les paramètres requis -

def method_name (var1 = value1, var2 = value2)
   expr..
end

Chaque fois que vous appelez la méthode simple, vous écrivez uniquement le nom de la méthode comme suit -

method_name

Cependant, lorsque vous appelez une méthode avec des paramètres, vous écrivez le nom de la méthode avec les paramètres, tels que -

method_name 25, 30

L'inconvénient le plus important de l'utilisation de méthodes avec paramètres est que vous devez vous souvenir du nombre de paramètres chaque fois que vous appelez de telles méthodes. Par exemple, si une méthode accepte trois paramètres et que vous n'en transmettez que deux, Ruby affiche une erreur.

Exemple

#!/usr/bin/ruby

def test(a1 = "Ruby", a2 = "Perl")
   puts "The programming language is #{a1}"
   puts "The programming language is #{a2}"
end
test "C", "C++"
test

Cela produira le résultat suivant -

The programming language is C
The programming language is C++
The programming language is Ruby
The programming language is Perl

Valeurs de retour des méthodes

Chaque méthode de Ruby renvoie une valeur par défaut. Cette valeur retournée sera la valeur de la dernière instruction. Par exemple -

def test
   i = 100
   j = 10
   k = 0
end

Cette méthode, lorsqu'elle est appelée, retournera la dernière variable déclarée k .

Déclaration de retour Ruby

L' instruction return dans ruby ​​est utilisée pour renvoyer une ou plusieurs valeurs à partir d'une méthode Ruby.

Syntaxe

return [expr[`,' expr...]]

Si plus de deux expressions sont données, le tableau contenant ces valeurs sera la valeur de retour. Si aucune expression n'est donnée, nil sera la valeur de retour.

Exemple

return

OR

return 12

OR

return 1,2,3

Jetez un œil à cet exemple -

#!/usr/bin/ruby

def test
   i = 100
   j = 200
   k = 300
return i, j, k
end
var = test
puts var

Cela produira le résultat suivant -

100
200
300

Nombre variable de paramètres

Supposons que vous déclariez une méthode qui prend deux paramètres, chaque fois que vous appelez cette méthode, vous devez lui transmettre deux paramètres.

Cependant, Ruby vous permet de déclarer des méthodes qui fonctionnent avec un nombre variable de paramètres. Examinons un échantillon de ceci -

#!/usr/bin/ruby

def sample (*test)
   puts "The number of parameters is #{test.length}"
   for i in 0...test.length
      puts "The parameters are #{test[i]}"
   end
end
sample "Zara", "6", "F"
sample "Mac", "36", "M", "MCA"

Dans ce code, vous avez déclaré un exemple de méthode qui accepte un test de paramètre. Cependant, ce paramètre est un paramètre variable. Cela signifie que ce paramètre peut accepter n'importe quel nombre de variables. Ainsi, le code ci-dessus produira le résultat suivant -

The number of parameters is 3
The parameters are Zara
The parameters are 6
The parameters are F
The number of parameters is 4
The parameters are Mac
The parameters are 36
The parameters are M
The parameters are MCA

Méthodes de classe

Lorsqu'une méthode est définie en dehors de la définition de classe, la méthode est marquée comme privée par défaut. En revanche, les méthodes définies dans la définition de classe sont marquées comme publiques par défaut. La visibilité par défaut et la marque privée des méthodes peuvent être modifiées par public ou privé du Module.

Chaque fois que vous souhaitez accéder à une méthode d'une classe, vous devez d'abord instancier la classe. Ensuite, en utilisant l'objet, vous pouvez accéder à n'importe quel membre de la classe.

Ruby vous donne un moyen d'accéder à une méthode sans instancier une classe. Voyons comment une méthode de classe est déclarée et accédée -

class Accounts
   def reading_charge
   end
   def Accounts.return_date
   end
end

Voyez comment la méthode return_date est déclarée. Il est déclaré avec le nom de la classe suivi d'un point, qui est suivi du nom de la méthode. Vous pouvez accéder directement à cette méthode de classe comme suit -

Accounts.return_date

Pour accéder à cette méthode, vous n'avez pas besoin de créer des objets de la classe Accounts.

Déclaration d'alias Ruby

Cela donne un alias aux méthodes ou aux variables globales. Les alias ne peuvent pas être définis dans le corps de la méthode. L'alias de la méthode conserve la définition actuelle de la méthode, même lorsque les méthodes sont remplacées.

Il est interdit de créer des alias pour les variables globales numérotées ($ 1, $ 2, ...). Le remplacement des variables globales intégrées peut entraîner de graves problèmes.

Syntaxe

alias method-name method-name
alias global-variable-name global-variable-name

Exemple

alias foo bar
alias $MATCH $&

Ici, nous avons défini foo alias pour bar, et $ MATCH est un alias pour $ &

Déclaration undef Ruby

Cela annule la définition de la méthode. Un undef ne peut pas apparaître dans le corps de la méthode.

En utilisant undef et alias , l'interface de la classe peut être modifiée indépendamment de la superclasse, mais notez qu'il peut s'agir de programmes interrompus par l'appel de méthode interne à self.

Syntaxe

undef method-name

Exemple

Pour annuler la définition d'une méthode appelée bar, procédez comme suit -

undef bar