Ruby fonctions méthodes vs
Dans le Langage De Programmation Ruby, Chapitre 6 (deuxième alinéa), ils affirment:
De nombreuses langues, la distinction entre
les fonctions, qui ne comportent pas de
l'objet et les méthodes qui sont appelées
sur un objet récepteur. Parce que Ruby est
purement d'un langage orienté objet, tous les
les méthodes sont de véritables méthodes et sont
associé à au moins un objet.
Et puis, au milieu de la 6ème paragraphe:
Les deux procs et les lambdas sont des fonctions
plutôt que de méthodes invoquées sur un
objet.
Je suis un peu confus au sujet de ces déclarations. Est Ruby vraiment pur OO, et donc n'a pas les fonctions qui ne sont pas associées à des objets (si c'est une définition valable de la pure OO), ou sont procs/lambdas associés avec le Proc de l'objet? Quelle est la différence entre les fonctions et les méthodes en Ruby?
Toute aide dans l'analyse et la compréhension de ce serait appréciée.
Vous devez vous connecter pour publier un commentaire.
lambda
s en Ruby sont les objets de la classe Proc.Proc
objets n'appartiennent pas à n'importe quel objet. Ils sont appelés, sans les lier à un objet.Méthodes sont des objets de la classe
Method
ouUnboundMethod
, selon qu'ils sont liés ou non liés. Voir l'explication ici. Indépendant des méthodes ne peuvent pas être appelé jusqu'à ce qu'ils sont liés à un objet.Vous pouvez
bind
unUnboundMethod
à un objet et ensuite l'appeler. Mais vous ne pouvez pasbind
unProc
à un objet.Proc
objets peuvent toutefois capture de variables locales dans les environs de la portée, de devenir des fermetures.Proc et les lambdas sont à la fois des objets eux-mêmes, avec un
call
méthode qui appelle en fait le bloc associé avec le proc (ou lambda). Cependant, Ruby fournit certaines sucre syntaxique pour les invoquer sans appel explicite àcall
.Je pense que la distinction entre les méthodes et les premier ordre de la fonction ie. les fonctions qui peuvent être passés en tant que valeurs.