我定义了这两个函数:
CMtmp
我从前面传递了一个np.mean(CMtmp,axis=1)
和一个字符串(' X'或者' Y'是我希望最终用户传递给我的)结束。我有这个代码,它处理字符串传递时:
function fetchYPosts() {
$http.get("/postsY/")
.then(function(response) {
self.posts = response.data;
}, function(response) {
self.posts = {};
});
};
function fetchXPosts() {
$http.get("/postsX/")
.then(function(response) {
self.posts = response.data;
}, function(response) {
self.posts = {};
});
};
话虽如此,给定一个包含字符串的变量,如何调用具有字符串变量名称的函数?
答案 0 :(得分:2)
您应该使用以下内容选择正确的方法:
fix = lambda q: ({ k: '...' if k == 'ids' else fix(v) for k, v in q.items() }
if isinstance(q, dict) else
([fix(i) for i in q] if isinstance(q, list) else q))
可以像:
一样使用var fetcher = XOrY == 'x' ? fetchXPosts : fetchYPosts;
如果您的情况有太多不同的抓取功能,您可以将它们定义为散列的一部分:
self.handler = function(id, XOrY) {
var fetcher = XOrY == 'x' ? fetchXPosts : fetchYPosts;
$http.post("/" + XOrY + "/" + id + "/handle/")
.then(function(response) {
fetcher();
# Here is where I want to call funcitonToCall.
}, function(response) {
self.cerrorMessages = BaseService.accessErrors(response.data);
});
};
并从var fetch = {
YPosts: function() {
$http.get("/postsY/")
.then(function(response) {
self.posts = response.data;
}, function(response) {
self.posts = {};
});
},
XPosts: function() {
$http.get("/postsX/")
.then(function(response) {
self.posts = response.data;
}, function(response) {
self.posts = {};
});
}
}
获取功能:
fetch[XorY]
答案 1 :(得分:1)
您可以将这两个函数封装在一个对象中,并在您的方法中调用此服务,如此
var service = {
fetchXPosts: function(){},
fetchYPosts: function(){}
}
self.handler = function(id, XORY) {
service['fetch'+XORY+'posts']();
}