Ce n'est probablement pas nécessairement une exclusivité Ruby, mais j'ai ici une sorte de question persistante que j'ai récemment rencontrée avec Ruby.
# @param {Integer[]} nums # @return {Integer[]} def running_sum(nums) i = 0 while i < nums.length - 1 nums[i+1] = nums[i] + nums[i+1] i += 1 end nums end
Le but de ceci est de rassembler un " somme en cours. " Je comprends la logique, mais cette syntaxe me déroute. Voici ce que je comprends:
"Cette méthode s'appelle running_sum et a un tableau appelé nums (qui contient probablement des nombres). Nous commencerons à compter ces nombres à zéro. Tant que ce que nous comptons est inférieur à le nombre total de nombres dans notre tableau moins un, nous allons parcourir notre point de départ et l'emplacement du tableau qui suit. Nous ajouterons également ce nombre suivant à notre total transporté pendant que nous le parcourons. Notre total final est égal au où nous nous sommes arrêtés après avoir parcouru le tableau en boucle. Montrez-moi ce total final. Nous avons terminé ici. "
Je crois comprendre la logique générale, mais pour des raisons de réplication, j'aimerais savoir pourquoi la lettre i est utilisée ici. Si je comprends bien, c'est similaire à une variable que nous utiliserions en algèbre. Ma compréhension est-elle exacte? Ou suis-je juste loin de ça?
3 Réponses :
J'aimerais savoir pourquoi la lettre i est utilisée ici.
i
est généralement le nom de la variable standard 'counter' en programmation impérative, abréviation de 'index' (par exemple, le tableau à l'index i
étant nums [i ]
)
C'est en fait l'abréviation d'Integer
def self.running_sum(nums) #etc ... end
Votre déclaration "Ruby n'est PAS fortement typée" est incorrecte . Il n'est pas typé statiquement, mais est plus fortement typé que C où vous pouvez accéder à n'importe quel morceau de mémoire de la manière que vous voulez via des pointeurs, malgré les déclarations statiques au moment de la compilation.
Cette présentation de 4 minutes est ironique , mais en a les dents.
J'aimerais savoir pourquoi la lettre i est utilisée ici.
C'est une vieille habitude paresseuse.
Ici, il est représentatif que vous avez affaire à un entier, et cela peut convenir pour un bref exercice de code.
Mais vous pouvez faire mieux avec votre propre code.
Il n'y a que deux choses difficiles en informatique: l'invalidation du cache et l'attribution de noms.
- Phil Karlton
Dans un exercice de codage abstrait, il est difficile de nommer les choses correctement sans un contexte réel appliqué. Ainsi, l'auteur a choisi "Integer" comme nom et l'a raccourci. Mais lorsque vous appliquez cela dans le monde réel, vous aurez un cas d'utilisation qui peut, et devrait, inspirer votre dénomination des choses au-delà du «type» de la variable.
Ce n'est pas spécifique à ruby, mais la communauté ruby (je trouve) plus que les autres communautés préfère des méthodes très longues et descriptives et des noms de variables. Alors, utilisez de longs noms descriptifs des variables lorsque vous appliquez votre apprentissage dans votre code de production.
Je n'ai jamais vu cette citation auparavant, mais je l'adore. En tant que musicien, je peux vous dire que je connais d'innombrables chansons. Mais n'ose pas me demander quelles chansons je connais parce que je ne suis même pas consciente que je connais des chansons du tout. Plus précisément dans le contexte d'une setlist pour un événement donné. Je ressens exactement le même sentiment d'impuissance lorsqu'il s'agit de nommer des choses dans le code. Mes notes à gratter sur le flux de données / la structure des applications rappellent l'éthique de la narration d'un enfant de 5 ans.
ruby autorise-t-il
nums [i + 1]. = nums [i + 1]
ounums [i + 1] + = nums [i + 1]
?La lettre i en termes de programmation a été utilisée comme nom de variable représentant une valeur numérique de nombre entier pour le comptage depuis les années soixante-dix où il était généralement raccourci pour décrire une variable de type entier dans des langages fortement typés tels que COBOL, x est une autre variable de compteur courante name mais vous pouvez utiliser ce que vous voulez au lieu de la lettre i, vous pouvez le remplacer par les mots my_counter ou tout ce que vous ressentez décrit votre utilisation. Au fait, votre hypothèse concernant les nombres contenant des entiers est fausse, elle pourrait contenir des lettres, des mots, un hachage ou même un tableau de tableaux
Cela va même plus loin que les années soixante-dix. Dans Fortran (1957), le type d'une variable est donné par la première lettre du nom de la variable, par ex. les noms de variables commençant par
I
…N
sont des entiers, tous les autres sont des réels. Par conséquent,I
est le premier nom de variable lexicographiquement le plus court qui définit une variable entière.@ JörgWMittag Cela remonte encore plus loin que cela parce que FORmulaTRANslator essayait de mapper des concepts d'indexation mathématique de longue date à partir de vecteurs et de matrices dans un contexte informatique.
Puis-je suggérer un titre plus succinct pour la question? Quelque chose pour montrer que vous vous interrogez sur la dénomination des variables, ou plus précisément sur l'utilisation de
i
comme nom de variable?