puts "Hi"
=> "Hi"
有没有办法从这段代码中获得回报,以便我可以这样说:
x = puts "Hi"
看跌期权的结果为零。我特别感兴趣的是从%x()
获得回报,但看起来同样的概念适用于puts
答案 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"
如果要删除调试,只需删除两个字符。