J'apprends à utiliser J via la lecture en ligne et à refaire quelques vieilles affectations Java en utilisant ce langage, et je voudrais savoir comment faire un verbe qui n'accepte aucun opérande, ou qui revient n'importe quel résultat. La raison étant: Je voudrais m'autoriser à taper un verbe, appelons-le go
qui exécuterait une séquence de code par lui-même et enregistrerait toutes les données qu'il produirait dans son exécution, mais n'afficherait rien du tout. L'objectif global serait de pouvoir éventuellement reproduire la classe et l'interface de ma machine distributrice qui nécessite au moins la méthode void returnChange()
.Void Verbs in J
Répondre
L'appel d'un verbe J est toujours fait avec au moins un argument de droite. Envoyer n'importe quoi à un verbe monadique qui ignore complètement le bon argument (disons 0
ou ''
).
Les fonctions renvoient toujours quelque chose, mais l'utilisation de i.0
ou ''
minimise les données renvoyées.
go =: 3 : 0
NB. do stuff
i. 0
)
go ''
MPelletier est exact que les verbes J exigent toujours un bon argument pour produire un résultat, et que l'exécution a nécessairement un résultat. La situation est similaire pour les adverbes et les conjonctions. Rien dans J n'est similaire à une méthode qui "renvoie un vide".
L'exemple fourni par MPelletier utilise le mot-clé 'return'. Dans ce contexte, le mot-clé n'a aucun effet. Une version modifiée de ce programme est offert ici:
go =: 3 : 0
NB. do stuff
i. 0 0
)
Une différence visible entre ce programme et celui affiché par MPelletier est que, si elle est exécutée dans la console, il ne produit pas une ligne vide avant l'invite suivante. (Tout résultat avec zéro en position _2 à partir de sa forme a cet effet.)
MPelletier a raison - l'une des différences entre J et APL est que vous ne pouvez pas spécifier d'opérateurs nil-adic. La seule façon de répliquer le comportement d'une fonction vide est de passer un argument qui ne renvoie rien d'intéressant, et de compter sur les effets secondaires pour accomplir ce que vous voulez faire. – estanford