有人可以帮助我了解 Pig Latin 迭代在 Ruby 中的工作原理吗?
Can someone help me understand how this Pig Latin iteration works in Ruby?
def pig_latin_word(word)
vowels = "aeiou"
if vowels.include?(word[0])
return word + "yay"
end
word.each_char.with_index do |char, i|
if vowels.include?(char)
return word[i..-1] + word[0...i] + "ay"
end
end
end
关于方法,假设代码接受输入“banana”,returns“ananabay”。但是,如果我遍历字符串中的每个字符,最后一个迭代的元音会不会是新 Pig Latin 单词的来源?
换句话说,“banana”返回“ananabay”而不是返回“abananay”的原因是什么?
In other words, what is the reason behind "banana" returning "ananabay" as opposed to returning "abananay"?
让我们逐行逐行执行代码:
if vowels.include?(word[0])
"banana"
的第一个字母是元音吗?不,所以第一个块不计算。
word.each_char.with_index do |char, i|
这是遍历单词的每个字母
在 第一次迭代中、char = "b"
和 i = 0
。
if vowels.include?(char)
"b"
是元音吗?不,所以块不评估。
下一次迭代...现在,char = "a"
和 i = 1
。
"a"
是元音吗? 是,所以块计算。让我们看看它说了什么:
return word[i..-1] + word[0...i] + "ay"
word[1..-1]
表示“从 word
的 第二个字母 到 的所有内容,包括 最后一个字母,即"anana"
.
word[0...1]
表示“从 word
的 第一个字母 到 的所有内容,但不包括 第二个字母。换句话说,只有第一个字母:"b"
。
- 将它们连接在一起,您将得到:
"anana" + "b" + "ay"
,即 "ananabay"
。
def pig_latin_word(word)
vowels = "aeiou"
if vowels.include?(word[0])
return word + "yay"
end
word.each_char.with_index do |char, i|
if vowels.include?(char)
return word[i..-1] + word[0...i] + "ay"
end
end
end
关于方法,假设代码接受输入“banana”,returns“ananabay”。但是,如果我遍历字符串中的每个字符,最后一个迭代的元音会不会是新 Pig Latin 单词的来源?
换句话说,“banana”返回“ananabay”而不是返回“abananay”的原因是什么?
In other words, what is the reason behind "banana" returning "ananabay" as opposed to returning "abananay"?
让我们逐行逐行执行代码:
if vowels.include?(word[0])
"banana"
的第一个字母是元音吗?不,所以第一个块不计算。
word.each_char.with_index do |char, i|
这是遍历单词的每个字母
在 第一次迭代中、char = "b"
和 i = 0
。
if vowels.include?(char)
"b"
是元音吗?不,所以块不评估。
下一次迭代...现在,char = "a"
和 i = 1
。
"a"
是元音吗? 是,所以块计算。让我们看看它说了什么:
return word[i..-1] + word[0...i] + "ay"
word[1..-1]
表示“从word
的 第二个字母 到 的所有内容,包括 最后一个字母,即"anana"
.word[0...1]
表示“从word
的 第一个字母 到 的所有内容,但不包括 第二个字母。换句话说,只有第一个字母:"b"
。- 将它们连接在一起,您将得到:
"anana" + "b" + "ay"
,即"ananabay"
。