Press "Enter" to skip to content

Pouvez-vous utiliser un bloc comme paramètre dans Ruby ?

Un collègue m'a demandé de refactoriser du code en utilisant un bloc passé en paramètre à une méthode. Si vous n'êtes pas familier avec les blocs Ruby, vous pouvez regrouper quelques lignes de code dans un bloc "do-end" (ou {} s'il s'agit d'une seule ligne ou si vous aimez gâcher votre cerveau). Utiliser des blocs est amusant, c'est un bon moyen de regrouper une série d'actions :

Q. Pouvez-vous passer un bloc entre les méthodes sans le paramètre & block ?

Si Proc.new est appelé depuis l'intérieur d'une méthode sans aucun argument propre, il renverra un nouveau Proc contenant le bloc donné à sa méthode environnante. Cela signifie qu'il est désormais possible de passer un bloc entre les méthodes sans utiliser le paramètre &block :

Q. Comment les noms d'arguments sont-ils définis dans un bloc ruby ?

Les noms d'arguments sont définis entre deux pipe | personnages. Si vous avez déjà utilisé chacun d'entre eux, alors vous avez utilisé des blocs ! Un bloc Ruby est utile car il vous permet d'économiser un peu de logique (code) et de l'utiliser plus tard. Cela peut être quelque chose comme écrire des données dans un fichier, comparer si un élément est égal à un autre, ou même imprimer un message d'erreur.

Q. Pouvez-vous regrouper des lignes de code dans Ruby ?

Si vous n'êtes pas familier avec les blocs Ruby, vous pouvez regrouper quelques lignes de code dans un bloc "do-end" (ou {} s'il s'agit d'une seule ligne ou si vous aimez gâcher votre cerveau). Utiliser des blocs est amusant, c'est un bon moyen de regrouper une série d'actions :

Q. Pouvez-vous définir une méthode avec des arguments optionnels en Ruby ?

Nous pourrions définir une méthode et commencer la liste des paramètres avec un seul argument splat, puis quelques arguments positionnels facultatifs, et ainsi de suite. Même si Ruby le permet, c'est généralement une très mauvaise pratique car le code serait difficile à lire et encore plus difficile à déboguer. Il est généralement préférable d'utiliser l'ordre suivant :

Q. Comment rendre différents templates en Ruby on rails ?

Si vous souhaitez restituer la vue qui correspond à un modèle différent dans le même contrôleur, vous pouvez utiliser render avec le nom de la vue : si l'appel à la mise à jour échoue, l'appel de l'action de mise à jour dans ce contrôleur rendra le fichier edit.html. modèle erb appartenant au même contrôleur.

Q. Comment les PROC et les blocs sont-ils utilisés dans Ruby ?

Les blocs sont utilisés pour transmettre des blocs de code aux méthodes, et les procs et lambda permettent de stocker des blocs de code dans des variables. Dans Ruby, les blocs sont des extraits de code qui peuvent être créés pour être exécutés ultérieurement. Les blocs sont passés aux méthodes qui les génèrent dans les mots-clés do et end.

Q. Comment fonctionne le passage de bloc implicite dans Ruby ?

En Ruby, les méthodes peuvent prendre des blocs implicitement et explicitement. Le passage de bloc implicite fonctionne en appelant le mot clé yield dans une méthode. Le mot clé yield est spécial. Il trouve et appelle un bloc passé, vous n'avez donc pas à ajouter le bloc à la liste des arguments acceptés par la méthode.