私はいつも、スタイルの好み (言葉が少ないほど簡潔) のために、ルビストが ruby で return を暗黙的にすることを選択していると考えていました。ただし、次の例では、実際に戻り値を暗黙的にする必要があることを誰かが確認できますか? そうしないと、意図した機能が機能しません。(意図された機能は、文を単語に分割し、各単語に対して「母音で始まる」または「子音で始まる」のいずれかを返すことができるようにすることです)
# With Implicit Returns
def begins_with_vowel_or_consonant(words)
words_array = words.split(" ").map do |word|
if "aeiou".include?(word[0,1])
"Begins with a vowel" # => This is an implicit return
else
"Begins with a consonant" # => This is another implicit return
end
end
end
# With Explicit Returns
def begins_with_vowel_or_consonant(words)
words_array = words.split(" ").map do |word|
if "aeiou".include?(word[0,1])
return "Begins with a vowel" # => This is an explicit return
else
return "Begins with a consonant" # => This is another explicit return
end
end
end
さて、このコードをより効率的かつ優れたものにする方法がたくさんあることは確かですが、このようにレイアウトした理由は、暗黙的な戻り値の必要性を説明するためです。文体の選択だけでなく、暗黙のリターンが実際に必要であることを誰かが確認できますか?
編集:これは、私が見せようとしていることを説明するための例です:
# Implicit Return
begins_with_vowel_or_consonant("hello world") # => ["Begins with a consonant", "Begins with a consonant"]
# Explicit Return
begins_with_vowel_or_consonant("hello world") # => "Begins with a consonant"