如何将proc设置为仅运行才能在Ruby中使条件成立?

时间:2016-03-14 21:42:39

标签: ruby hash proc

我有一个:symbols => values的哈希值,其值可以是fixnum或boolean。我必须运行一个循环,它将调用每个(&:符号)在主参数上调用。

我正在使用的默认哈希是:

default_options = {
        :times => 1,
        :upcase => false,
        :reverse => false,
    }

我用来调用它们的循环,假设我已经通过方法传递了一个选项哈希来更改其中一个默认值并合并它们。

hash.each do |key,val|
        unless hash[key] == default_options[key]
            result = key.to_proc.call(string)
        end
    end

所以基本上,如果我传递一个更改默认值的选项哈希,它应该运行每个proc。如果我通过:times => 5,它应该打印字符串5次,如果我将:upcase => true等放在选项哈希中,它应该打印它。那么如何用符号形式编写proc来接收参数,或者使布尔值证明是真的?

1 个答案:

答案 0 :(得分:0)

这会做我认为你想要的,但你不应该像我一样搞乱String(只是添加时间方法)。

1.0
1.5
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]

注意,我这里没有使用to_proc,因为调用方法更容易。