假设我在一个模块中有三个函数,如下所示:
var App = React.createClass({
componentDidMount: function() {
var card = this.refs.card.getDomNode();
},
render: function() {
return(
<div>
<Card ref="card"/>
</div>
)
}
});
两个函数def add_nums(a, b):
return a + b
def sum_and_square_one(add_nums, a, b):
result = add_nums(a,b)
return result*result
def sum_and_square_two(a, b):
result = add_nums(a,b)
return result*result
和sum_and_square_one
执行相同的任务。但是前者将sum_and_square_two
作为参数,而后者则在内部调用add_nums
。我的问题是哪一个是更好的方式。将函数作为参数传递或在函数内部调用?
答案 0 :(得分:0)
如果您总是想要调用相同的函数,那么每次都将它作为参数传递是没有意义的。 (在您的示例中就是这种情况)
但是,如果您希望动态调用不同的(可能类似的)函数,那么将适当的函数作为参数传递将是有意义的。
答案 1 :(得分:0)
取决于您的使用案例。您是否需要该函数根据该参数更改其工作方式?
或者,将你毫无意义的例子改写成一个没有意义的例子(但仍然相当):
def add_nums(a, b):
return a + b
def do_something_then_square(a, b, what_to_do):
result = what_to_do(a, b)
return result * result
def sum_then_square(a, b):
result = add_nums(a, b)
return result * result
# Then you do:
sum_then_square(2, 5) # 49
do_something_then_square(2, 5, what_to_do=add_nums) # 49
do_something_then_square(2, 5, what_to_do=lambda a, b: a + b) # 49
do_something_then_square(2, 5, what_to_do=lambda a, b: a * b) # 100
do_something_then_square(2, 5, what_to_do=min) # 4
do_something_then_square(2, 5, what_to_do=complex) # (-21+20j)
唯一的问题是:您是否需要增加灵活性?否则它只是无用的额外打字。必须逐案回答这个问题;它需要一个完整的例子才能给出有用的答案。