6
votes

Passez l'argument de fonction comme bloc de code

Je suis nouveau à Scala. J'ai cherché mais il n'y a pas de "chaîne de recherche" facile pour la question apparemment facile que j'ai. xxx

pourquoi la seconde ( bar ) ne fonctionne pas? < / p>


0 commentaires

3 Réponses :


1
votes

bar code> Accepte une fonction qui ne prend aucun argument et renvoie chaîne code>. Vous avez donné juste une chaîne code>. Pour le faire fonctionner:

bar{() => "xyz"}


0 commentaires

6
votes

second baz fonctionne car ce n'est pas une fonction littérale, mais un paramètre d'appel-nommé. Fondamentalement, ce qu'il fait, c'est retarder le moment du calcul de l'argument jusqu'à ce qu'il soit nécessaire dans le programme. Vous pouvez également en lire à ce sujet dans Cette question. Comme pour bar Il vous suffit de passer une fonction comme bar {() => "xyz"}


3 commentaires

est la méthode baz puis l'approche recommandée pour la définition de la définition de structures telles que essayer {...} ?


@Jefisher en fait à Scala Essayez Catch n'est pas recommandé du tout. Il y a une approche plus fonctionnelle avec Essayez . En ce qui concerne le nom appelé, il est utile lorsque vous avez un grand nombre de computions et que vous n'êtes pas sûr que vous en avez besoin ou non, par exemple dans l'expression if-else


Ce que je voulais dire si je veux créer des structures essentielles telles que moniteur {...} mutex {...} instrument {...} et ainsi de suite. L'approche "Baz" serait-elle la meilleure pour ce genre de structures "langues"?



0
votes

Ce cas est spécial pour les fonctions / blocs sans paramètre. xxx

unité "()" est facultatif pour f0_1. L'ajouter à F0 entraînera une erreur. F0 n'accepte aucun paramètre. L'unité elle-même est un paramètre déclarant qu'il n'y a pas de paramètre. Fs2.f0 correspond à baz, fs2.f0 () correspond à la barre.


0 commentaires