如何将投入转为回报?

时间:2013-05-05 02:37:21

标签: ruby return output

puts "Hi"
=> "Hi"

有没有办法从这段代码中获得回报,以便我可以这样说:

x = puts "Hi"

看跌期权的结果为零。我特别感兴趣的是从%x()获得回报,但看起来同样的概念适用于puts

2 个答案:

答案 0 :(得分:2)

如果您不想编写自定义函数,一个简单的解决方案是使用tap,这是一个简洁的内置方法,定义为

class Object
    def tap
        yield self
        self
    end
end

对于执行新创建的对象的操作特别有用,这正是您正在处理的对象。这是你在这种情况下使用它的方式

x = "Hi".tap {|obj| puts obj}

当我需要做很多事情时,我会使用一个简单的小自定义方法,我喜欢称之为“see”,它会静静地打印一个对象

class Object
    def see
        puts self
        self
    end
end

导致

x = "Hi".see

编辑:基于我对%x的粗略了解,我相信你想要的是获取系统命令的来源并在一个动作中执行它。在这种情况下,您必须将其表示为字符串:

x = "destroy -device printer -reason rage".tap {|cmnd| %x{#{cmnd}}} # actually destroys printer
puts x # outputs "destroy -device printer -reason rage"

答案 1 :(得分:1)

我只是这样做:

p x="hi"

如果要删除调试,只需删除两个字符。