用于scalatra输入的迭代

时间:2013-12-23 17:42:38

标签: scala scalatra

我正在尝试使用以下方式迭代来阅读scalatra webapp中的输入

for (
         input1<- params.getOrElse("input1", "");
         input2 <- params.getOrElse("input2", "");
         search <- params.getOrElse("search", false)
    ) {
       //Perform action
    }

抛出错误值foreach不是Object的成员。

如果用户没有提供任何输入,它应该默认为空字符串并调用操作而不是断开循环。因此我使用getOrElse。但我没有成功。

任何帮助?

1 个答案:

答案 0 :(得分:1)

您可以使用for-comprehension与Option一起使用,但不能将其用于至少没有定义foreachmap或{{1}的对象}}。在您的情况下,如果flatMap正在返回选项,那么......

params

如果for( input1 <- params get "input1" input2 <- params get "input2" ){ //do stuff } input都不是input2,则无法运行。

如果你不想让控制逻辑短路,并且你希望None返回有明智的默认值,那么更好的办法就是

Option

您明确提供默认值并将其传递给函数调用。