Rubyで絞首刑執行人のアプリケーションを構築するチュートリアルをフォローしています。ファイルからインポートされた国名である単語を非表示にするマスカレード機能があります。問題は、これが実際にどのように単語を偽装しているのか、または三項演算子がどのように注入で機能しているのかを理解していないことです。文字が空白(つまり "")であるかどうかをチェックし、空白である場合(つまり "")に設定しますが、空白でない場合は&nbspになります。この関数は、単語に実際の文字、つまり文字が含まれているという事実を処理していないようです。
誰かがこの種の初心者について説明できますか、私が誤解していることは何ですか?また、なぜ最後に(閉じる前に}'変装'を再び追加するのですか?
def masquerade(word)
word.each_char.inject([]) { |disguise, char| disguise << (char == " " ? " " : " "); disguise }
end
ゲームワードの例
Afghanistan
Albania
Algeria
Andorra
Angola
Antigua & Deps
Argentina
Armenia
Wordクラス全体
class Word
class << self
def get_random
content = File.read("countries.txt")
words = content.split("\n")
words[rand(words.size)].upcase
end
def masquerade(word)
word.each_char.inject([]) { |disguise, char| disguise << (char == " " ? " " : " "); disguise }
end
def reveal(last_revealed_word, char_clicked, final_word)
chars = final_word.each_char.to_a
last_revealed_word.each_index do |i|
last_revealed_word[i] = chars[i] if last_revealed_word[i] == " " and chars[i] == char_clicked
end
end
def chars_left(revealed_word)
revealed_word.count { |c| c == " " }
end
end
end