puts "Hi"
=> "Hi"
有没有办法从这段代码中获得回报,我可以这样说:
x = puts "Hi"
看跌期权的结果为零。我特别有兴趣从中获得回报,%x()
但似乎同样的概念适用于puts
如果您不想编写自定义函数,一个简单的解决方案是使用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"
我只是这样做:
p x="hi"
如果要删除调试,只需删除两个字符。