将Directive1[Option[String]]转换为字符串scala
我是斯卡拉的新手。我已经写了几行代码,这些代码给了我cookie。大概是这样的:将Directive1[Option[String]]转换为字符串scala,scala,akka,Scala,Akka,我是斯卡拉的新手。我已经写了几行代码,这些代码给了我cookie。大概是这样的: var dataCookie = optionalCookie("user_session").map(_.map(_.value)); dataCookie是一个Directive1[选项[String]]。我希望它是String。如何从中获取字符串?您好,欢迎使用SO >,让我们详细考虑结果类型:代码> RetriVe1[Posi[Str] ] < /C> >: Directive1-akka http类
var dataCookie = optionalCookie("user_session").map(_.map(_.value));
dataCookie
是一个Directive1[选项[String]]
。我希望它是String
。如何从中获取字符串?您好,欢迎使用SO
<> >,让我们详细考虑结果类型:代码> RetriVe1[Posi[Str] ] < /C> >:
-akka http类负责传入请求转换或解析传入请求。有关更多详细信息,请参阅:Directive1
-Scala标准库monad描述了可能缺少的值选项
higherRoute ~> optionalCookie("user_session") {
case Some(session) =>
println(s"User session: $session") // handle present session cookie value
case None => //handle absent session cookie value
}
其中higherRoute
只是Route
的一个示例,您需要在其中附加给定的一段逻辑
有关更多详细信息,请参阅官方文档:
希望这有帮助 所以我可以在Some()中设置任何变量。因为我试过这样做,它不是设置不,你不能-
session
是让我们说val。如果你不想知道如何修改它,你需要声明新的局部变量,比如val updatedSession=session+“update”
,所以我不能使用var,然后在某个()之外使用该变量不是真的:您可以在Some(session)=>
中使用session
您只是不能将它的值重新分配给另一个。如果不需要这样做,请按原样使用,在其他情况下,如果需要更改原始会话,请创建新的var
或val
value@dharmeshsingh对不起,但进一步的讨论超出了这个问题的范围。你最初的问题只是关于可选择的cookie重审。如果你面临其他问题,请提出另一个问题。