作为一个Ruby编程练习,我想创建一个函数“reverser”来反转字符串的每个单词。但是,它应该操作块的内容而不是参数。所以
reverser {"hello dolly"}
应该返回“olleh yllod”。我知道如何制作类似的方法:
def reverse_words(string)
words=string.split()
words.map! {|word| word.reverse}
words.join(" ")
end
但是,该方法应该对块的内容进行操作,而不是对“正常”参数进行操作。到目前为止,我有这个:
def reverser(&prc)
yield.reverse
end
然而,这只会反转一个单词,而不是句子中的每个单词。我不确定如何以这种方式获取作为参数传递的块的内容的“句柄”。有什么想法吗?
答案 0 :(得分:5)
def reverser
yield.split.map(&:reverse)
end
reverser {"hello dolly"}
=> ["olleh", "yllod"]
答案 1 :(得分:1)
我发现可以简单地将一个变量分配给" yield"的输出。所以我定义了
def reverser
str=yield
words=str.split()
words.map! {|word| word.reverse}
words.join(" ")
end
命令
p reverser {"hello dolly"}
然后导致所需的输出。