我有一段代码我在其中使用了模式匹配我在所有情况下都使用了map,我想得到什么地图给变量的输出。以下是我的代码:
function getJokeCategories() {
return Promise.all([
// ^^^^^^
pgetJSON("http://api.icndb.com/categories"),
pgetJSON("http://api.icndb.com/jokes/count").then(function(data) {
var jokesToGet = [];
for (var i=0; i<data; i++){
jokesToGet.push("http://api.icndb.com/jokes/"+i);
}
return Promise.all(jokesToGet.map(function(jk) {
// ^^^^^^
return pgetJSON(jk).then(function(joke) {
// ^^^^^^
console.log(jk + " just returned", joke);
return joke;
// ^^^^^^
});
})).then(function(jokes) {
console.log("All jokes returned. This does happen only when all jokes are retrieved.");
return {count:data, jokes:jokes};
// ^^^^^^
});
})
]);
}
getJokeCategories().then(function(result) {
console.log(result, "This does happen at the very end when joke count, joke categories and all jokes are returned.");
});
两个map语句的输出都是List [Option [Student]],有没有办法把它变成变量因为我想将这个列表转换成单个对象,因为HystrixCommand执行输出不支持List作为输出。我想将其转换为StudentListing(val listing:List [Option [Student]])
答案 0 :(得分:0)
只是...将其分配给值/变量:
override def run(): StudentListing = {
val result = StudentDataCache.get(surname) match { /* same code*/ }
StudentListing(result) // or however you wrap it into a StudentListing...
}
匹配表达式与Scala 中的任何其他表达式一样,被计算为值 - 您可以使用此值执行任何操作。