下面的代码似乎可以工作。但我不确定为什么......据我所知, .each_char
与 select
方法一样采用一个代码块。所以我对 Ruby 很陌生,如果以前有人问过这个问题,我深表歉意。
代码如下:
def word_test(word)
vowels = ["a","e","i","o","u"]
word_vowels = Hash.new()
word_vowels = word.to_s.each_char.select {|char| vowels.include?(char)}
if word_vowels == word_vowels.sort
return true
end
end
word_test("hello")
如何将需要代码块的方法附加到方法上?
最佳答案
查看 String#each_char 的文档。 “将 str 中的每个字符传递到给定的 block ,或者如果没有给定 block ,则返回一个枚举器。” “如果没有给出 block ,则返回一个枚举器”这句话经常出现在 Ruby 文档中 - 这就是使“将方法堆叠在彼此之上”有用的原因。实际上这就是所谓的“方法链”。
旁注:
if word_vowels == word_vowels.sort
return true
end
#better:
word_vowels == word_vowels.sort
关于Ruby:使用 block 迭代器的方法链接如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669419/