是否可以共享相同的回调?我如何将_id作为第二个参数传递给回调?
e.g。
function getEntry(_id) {
if (_id === undefined) {
return false;
}
return _(this.scope[this.key]).find(function(entry) {
return entry._id === _id;
});
}
function getEntryIndex(_id) {
if (_id === undefined) {
return false;
}
return _(this.scope[this.key]).findIndex(function(entry) {
return entry._id === _id;
});
}
我想要做的是为findIndex和find执行一个回调-e.g谓词 - 因为它们正在执行相同的任务,但是如何将_id传递给谓词?
function predicate(entry, _id) {
return entry._id === _id;
}
function getEntry(_id) {
if (_id === undefined) {
return false;
}
return _(this.scope[this.key]).find(predicate);
}
function getEntryIndex(_id) {
if (_id === undefined) {
return false;
}
return _(this.scope[this.key]).findIndex(predicate);
}
答案 0 :(得分:1)
我建议重新构建predicate
函数,就像这样
function predicate(_id, entry) {
return entry._id === _id;
}
然后在将_id
或find
传递给findIndex
时绑定return _(this.scope[this.key]).find(_.partial(predicate, _id)).value();
....
return _(this.scope[this.key]).findIndex(_.partial(predicate, _id)).value();
的值
getEntry
请注意最后的.value()
来电。这将给出实际返回的值。
实际上,您可以重构代码以仅使用一个function predicate(_id, entry) {
return entry._id === _id;
}
function getEntry(func, _id) {
if (_id === undefined) {
return false;
}
return _[func](this.scope[this.key], _.partial(predicate, _id));
}
getEntry('find', 1);
getEntry('findIndex', 1);
函数,例如
func
在这里,我们选择要使用参数_id
调用的函数,然后使用_.partial
创建一个新函数,将predicate
参数应用于<LinearLayout
local:MvxBind="Visibility RedeemCodeState, Converter=RedeemStateToVisibility, ConverterParameter=0"
函数。