Ceci est une question de l'académie de l'application des questions de préparation - quelqu'un pourrait-il expliquer la réponse. Je ne comprends pas comment l'ordre des opérations dans ce travail boucle while:Quel est l'ordre des opérations dans Ruby?
def dasherize_number(num)
i = 0
dashed = ""
num_s = num.to_s
while i < num_s.length
digit = num_s[i].to_i
if i > 0
prev_digit = num_s[i-1].to_i
if prev_digit%2 == 1 || digit%2 == 1
dashed += "-" ## THIS LINE COMES FIRST
end
end
dashed += num_s[i] ## WHY IS THIS ADDED TO "DASHED" FIRST?
i += 1
end
return dashed
end
puts(dasherize_number(32467743))
le résultat est 3-245-7-7-4-3 de sorte que tous les nombres impairs ont un tableau de bord de chaque côté, sauf les cas finaux.
Cela n'a aucun sens pour moi que la commande pour insérer un tiret est ajoutée à la nouvelle chaîne après la lettre d'origine même si elle vient en premier dans le code.
Merci!
Voulez-vous dire [priorité de l'opérateur] (https: // ruby- doc.org/core-2.2.0/doc/syntax/precedence_rdoc.html)? Vous devriez probablement parcourir ce code et mieux le déboguer, en affichant les résultats de chaque itération. – tadman
Indice: 'digit.odd?' Pourrait être plus explicite que l'astuce modulo. – tadman