-1
puts "Hi"
=> "Hi"

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

x = puts "Hi"

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

4

2 回答 2

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"
于 2013-05-05T02:46:09.863 回答
1

我只是这样做:

p x="hi"

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

于 2013-05-05T04:26:30.070 回答