J'ai remarqué que le code Ruby publié dans Dernier message n'est pas écrit à la manière de Ruby, j'ai donc également fait une note d'étude comme correction. abandonner.
Après avoir vu l'article suivant, j'ai essayé de le corriger en prenant le code de l'article précédent comme exemple tout en faisant référence au contenu à étudier. ** [Pour les débutants] Idiomes et méthodes utiles qui peuvent être utilisées pour la refactorisation dans Ruby and Rails | Qiita **
def Upcasing(result_lines)
result_lines[0] = result_lines[0].capitalize
break_flg = false
## ④ Notation de hachage en Ruby (sans modification: la raison pour laquelle cela n'a pas pu être fait sera décrite plus loin)
break_sign = { "."=>true, "!"=>true, "?"=>true, ","=>false }
result_lines.each_index do |i|
## ① Branche conditionnelle et valeur booléenne
if break_flg == true
result_lines[i] = result_lines[i].capitalize
end
## ② Comment spécifier les éléments du tableau, reportez-vous au nombre spécifié dans la chaîne de caractères
if break_sign[result_lines[i].slice(-1)] == true
break_flg = true
else
break_flg = false
end
end
joined_line = result_lines.join(" ")
## ③ Notation de la valeur de retour en Ruby
return joined_line
end
print Upcasing(["oh,", "yeah!", "hello!"])
## Résultat d'exécution
Oh, yeah! Hello!
def Upcasing(result_lines)
result_lines[0] = result_lines[0].capitalize
break_flg = false
## ④ Notation de hachage dans Ruby (La raison pour laquelle elle ne peut pas être modifiée sans modification sera décrite plus loin)
break_sign = { "."=>true, "!"=>true, "?"=>true, ","=>false }
result_lines.each_index do |i|
## ① Branche conditionnelle et valeur booléenne
- if break_flg == true
+ if break_flg
result_lines[i] = result_lines[i].capitalize
end
## ② Comment spécifier les éléments du tableau, reportez-vous au nombre spécifié dans la chaîne de caractères
- if break_sign[result_lines[i].slice(-1)] == true
+ if break_sign[result_lines[i][-1]]
break_flg = true
else
break_flg = false
end
end
joined_line = result_lines.join(" ")
## ③ Notation de la valeur de retour en Ruby
- return joined_line
end
print Upcasing(["oh,", "yeah!", "hello!"])
def Upcasing(result_lines)
result_lines[0] = result_lines[0].capitalize
break_flg = false
break_sign = { "."=>true, "!"=>true, "?"=>true, ","=>false }
result_lines.each_index do |i|
if break_flg
result_lines[i] = result_lines[i].capitalize
end
if break_sign[result_lines[i][-1]]
break_flg = true
else
break_flg = false
end
end
joined_line = result_lines.join(" ")
end
print Upcasing(["oh,", "yeah!", "hello!"])
## Résultat d'exécution
Oh, yeah! Hello!
Nous suivrons les points à examiner (1) à (4) dans l'ordre numérique.
- if break_flg == true
+ if break_flg
Structure de contrôle> if | Ruby 2.7.0 Manuel de référence
C'est embarrassant, mais j'en abusais à cause de l'inertie, et je ne comprenais pas la spécification fondamentale selon laquelle si une seule variable est décrite comme une expression, la vérité est renvoyée. Il ne s'agit pas seulement de Ruby ... Au moins, en Ruby, n'écrivez pas (== true) avec un simple jugement de vérité.
hoge = true
p hoge
if hoge; hoge = false; end
p hoge
true
false
var hoge = true;
console.log(hoge);
if (hoge) hoge = false;
console.log(hoge);
// true
// false
public class Hello{
public static void Main(){
bool hoge = true;
System.Console.WriteLine(hoge);
if (hoge){ hoge = false; }
System.Console.WriteLine(hoge);
}
}
// True
// False
- if break_sign[result_lines[i].slice(-1)] == true
+ if break_sign[result_lines[i][-1]]
def Upcasing(result_lines)
##
## Code omis
##
joined_line = result_lines.join(" ")
- return joined_line
end
break_sign = { "."=>true, "!"=>true, "?"=>true, ","=>false }
Au début, j'ai essayé de modifier la notation en utilisant des symboles comme indiqué ci-dessous.
break_sign = { ".": true, "!": true, "?": true, ",": false }
Lorsque je l'ai changé comme ci-dessus, le résultat de débogage de la méthode supérieure a changé. Ainsi, lorsque j'ai vérifié le contenu du hachage, la clé "!" Stockée comme ci-dessous n'était plus une chaîne de caractères.
break_sign = { "."=>true, "!"=>true, "?"=>true, ","=>false }
p break_sign
=> {"."=>true, "!"=>true, "?"=>true, ","=>false}
break_sign = { ".": true, "!": true, "?": true, ",": false }
p break_sign
=>{:"."=>true, :!=>true, :"?"=>true, :","=>false}
J'ai pensé à l'exprimer en utilisant des symboles, mais je me demandais s'il y avait tant de scènes où un caractère spécial était appliqué à la clé de hachage en premier lieu, alors j'ai décidé de passer par cette fois. Si vous remarquez quelque chose à ce sujet, je le posterai séparément.
Recommended Posts