当我在Rails控制台中执行命令并从数据库获取一些行,如下所示:
users = User.find(:all,:conditions => ["some conds"])
如果用户有20个结果,那么我进行以下操作:
users.each do |u|
puts u.name if u.gender == 'male'
end
在打印了所有男性姓名后,控制台会再次输出用户对象的所有内容。我不需要再看一遍。我该如何抑制它呢?我只对puts的输出感兴趣。
当我在Rails控制台中执行命令并从数据库获取一些行,如下所示:
users = User.find(:all,:conditions => ["some conds"])
如果用户有20个结果,那么我进行以下操作:
users.each do |u|
puts u.name if u.gender == 'male'
end
在打印了所有男性姓名后,控制台会再次输出用户对象的所有内容。我不需要再看一遍。我该如何抑制它呢?我只对puts的输出感兴趣。
这就是控制台的工作原理。你输入一个表达式,它会打印出它的值。
users.each do |u|
puts u.name if u.gender == 'male'
end
这段代码的值是users
对象本身,并且它被正确地打印出来了,使用puts
打印出来的是一个副作用。
你仍然可以通过改变表达式的返回值来抑制完整内容的打印,例如像这样:
users.each do |u|
puts u.name if u.gender == 'male'
end && false