如何将match语句的输出保存到变量中?

时间:2016-04-11 14:02:18

标签: scala

我有一段代码我在其中使用了模式匹配我在所有情况下都使用了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]])

1 个答案:

答案 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 中的任何其他表达式一样,被计算为值 - 您可以使用此值执行任何操作。