ruby - 在 Ruby 中,对 block 的内容执行函数

标签 ruby

作为 Ruby 编程练习,我想制作一个函数“reverser”,它可以反转字符串中的每个单词。但是,它应该对 block 的内容而不是参数进行运算。所以

reverser {"hello dolly"}

应该返回“olleh yllod”。我知道如何制作类似的方法:

def reverse_words(string)
  words=string.split()
  words.map! {|word| word.reverse}
  words.join(" ")
end

但是,该方法应该对 block 的内容进行操作,而不是对“正常”参数进行操作。到目前为止,我得到了这个:

def reverser(&prc)
  yield.reverse
end

但是,这只会反转一个单词,而不是句子中的每个单词。我不太确定如何获得以这种方式作为参数传递的 block 内容的“句柄”。有什么想法吗?

最佳答案

def reverser
  yield.split.map(&:reverse)
end

reverser {"hello dolly"}
 => ["olleh", "yllod"] 

关于ruby - 在 Ruby 中,对 block 的内容执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37635544/

相关文章:

ruby - 无需在 Erlang 或 Ruby 中保留堆栈即可生成集合的幂集

ruby - 首先 vagrant up 有效,但在停止/启动后出现 ruby​​ 错误

ruby - 如果 float 不是 .00 则只显示小数点 sprintf/printf

ruby-on-rails - Rails 复选框

mysql - 计算 ruby​​ 数组中的重复项并存储在哈希中

ruby-on-rails - 我怎么知道使用了多少 ActiveSupport Duration?

ruby - 如何在 debian squeeze 上将 ruby​​1.9.1 设​​置为默认版本

ruby-on-rails - 生成一个唯一且随机的 6 个字符长的字符串来表示 ruby​​ 中的链接

ruby-on-rails - Gem 安装 Rails 出现错误 : Failed To Build Gem Native Exension CentOS

ruby - 为什么从 Ruby 调用 Bash 命令会抛出错误?