Fermer

février 8, 2022

Sur la convention de parenthèse de Scala pour les fonctions sans argument


On peut être confus ou même irrité lorsqu'on apprend la convention de Scala concernant l'utilisation des parenthèses pour les fonctions sans argument.

La convention est la suivante : étant donné une fonction sans argument, vous utilisez des parenthèses à côté de l'appel de fonction uniquement si la fonction a des effets secondaires. So, vous invoqueriez une fonction nommée printCurrentState en écrivant printCurrentState()puisque printCurrentState a pour effet secondaire d'imprimer la sortie sur la console. D'autre part, vous invoqueriez une fonction nommée getCurrentState en écrivant simplement getCurrentStatepuisque getCurrentState renvoie probablement une valeur et ne fait rien d'autre.

Mais pourquoi ? Ici, je vais présenter une analyse rapide pour vous convaincre de la raison pour laquelle cette convention a du sens.

Considérons une fonction arbitraire sans argument. Une fonction sans argument arbitraire appartient à l'une des catégories suivantes :

Si nous ignorons la possibilité de "méthodes inutiles", nous pouvons réorganiser les trois options restantes pour voir que toute méthode sans argument donnée est soit

  • une méthode void avec des effets secondaires

  • une méthode avec une valeur de retour et aucun effet secondaire

  • une méthode avec une valeur de retour et des effets secondaires.

C'est-à-dire que chaque méthode sans argument est en pratique soit

  • une méthode avec des effets secondaires

  • une méthode avec une valeur de retour et sans effets secondaires, c'est-à-dire une "méthode getter".

Les "méthodes getter" au sens philosophique "presque variables" car elles n'est pas complètement inexact de penser à leurs invocations comme des aperçus de l'état de la réalité plutôt que comme une valeur renvoyée par un travail effectué en coulisses.

Puisque chaque méthode sans argument est soit une "méthode getter" ou non, il est syntaxiquement non ambigu d'établir la convention d'invoquer des "méthodes getter" sans parenthèses s (). Plus important encore, c'est agréable, car la suppression des parenthèses met l'accent sur l'interprétation des «méthodes getter» comme étant des variables.

À propos de l'auteur

Ross Grogan-Kaylor est consultant technique associé chez Perficient's Bureau de Minneapolis. Il aime s'engager avec des modèles structurels dans la syntaxe et dans les idées de haut niveau du développement de logiciels. f.fbq)return;n=f.fbq=function(){n.callMethod ?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(fenêtre,
document,'script','https://connect.facebook.net/en_US/fbevents.js');

fbq('init', '911436665572720');
fbq('track', "PageView");




Source link