很难确定代码的用法,如下所示:
[:create, :update, :pause].each { |action| send("to_#{action}") }
还有其他原因,这是一种反模式吗?
答案 0 :(得分:5)
它不是反模式。它是语言的一部分。你应该出于上述原因避免使用它,但有时它是唯一的选择。我不认为表现有明显的缺点。至于保持OOP,你应该建议切换到$(document).ready(function() {
$(window).scroll(function () {
//if you hard code, then use console
//.log to determine when you want the
//nav bar to stick.
console.log($(window).scrollTop())
if ($(window).scrollTop() > 50) {
$('.navbar').addClass('active');
}
if ($(window).scrollTop() < 50) {
$('.navbar').removeClass('active');
}
});
});
- 这是推荐的方式。
答案 1 :(得分:1)
有理由使用它,有理由避免它。这个简单的例子是一个反模式的例子,因为它是一个固定的数组,写起来会更简洁:
create
update
pause
如果您有使用它的情况,那么当数组不一定是静态的时,可能会有修改,尤其是在DSL的上下文中使用时。
Rails将此用于before_validation
处理程序链,例如,它有一个Symbol引用列表或要调用的Proc函数:
before_validation :check_sanity
before_validation lambda { do_something(1) }