如何在 Ruby 1.8.5 中重新传递多个方法参数?
我正在使用 ruby 1.8.5,我想使用一个辅助方法来帮助过滤用户的偏好,如下所示:
def send_email(user, notification_method_name, *args)
# determine if the user wants this email
return if !user.send("wants_#{notification_method_name}?")
# different email methods have different argument lengths
Notification.send("deliver_#{notification_method_name}", user, *args)
end
这在 ruby 1.8.6 中有效,但是当我尝试在 1.8.5 中执行此操作并尝试发送超过一个 arg 我收到如下错误:
参数数量错误(X 为 2)
其中 X 是特定方法所需的参数数量。我不想重写所有通知方法 - Ruby 1.8.5 可以处理这个问题吗?
I'm using ruby 1.8.5 and I'd like to use a helper method to help filter a user's preferences like this:
def send_email(user, notification_method_name, *args)
# determine if the user wants this email
return if !user.send("wants_#{notification_method_name}?")
# different email methods have different argument lengths
Notification.send("deliver_#{notification_method_name}", user, *args)
end
This works in ruby 1.8.6, however when I try to do this in 1.8.5 and try to send more than one arg I get an error along the lines of:
wrong number of arguments (2 for X)
where X is the number of arguments that particular method requires. I'd rather not rewrite all my Notification methods - can Ruby 1.8.5 handle this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一个很好的解决方案是使用哈希切换到命名参数:
A nice solution is to switch to named-arguments using hashes: