- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想写两个服务,然后用orElse让两个服务组合在一起,即service_one或service_two。他们都是部分函数。
服务之一是:
val usersService = HttpService {
case request @ GET -> Root / "users" / IntVar(userId) =>
Ok("test")
}
服务二是:
val versionService = HttpService{
case req @ GET -> Root / "version" => {
val jsonmap = ("origin" -> req.remoteAddr.getOrElse("unknown ip"))
Ok(compact(render(jsonmap)))
}
}
然后我想将它们组合在一起。
val service = userService orElse versionService //the error happens here.
错误是:
[error] F:\workspace\frankcheckAPI\src\main\scala\com\cardaccess\ServiceApp.scala:46: value orElse is not a member of org.http4s.HttpService
[error] val service = usersService orElse versionService
[error] ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
如何组合然后使然后的工作方式类似于如果大小写与第一个服务的路径匹配,则第一个服务工作,如果大小写与第二个服务的路径匹配。第二次服务工作。
ps:有关人士:
HttpService 对象的定义如下:
type HttpService = Service[Request, Response]
object HttpService {
/** Alternative application which lifts a partial function to an `HttpService`,
* answering with a [[Response]] with status [[Status.NotFound]] for any requests
* where the function is undefined.
*/
def apply(pf: PartialFunction[Request, Task[Response]], default: HttpService = empty): HttpService =
Service.lift(req => pf.applyOrElse(req, default))
...
}
最佳答案
orElse
与 PartialFunction
一起使用,例如:
val t1: PartialFunction[Int, String] = {case 1 => "I am 1"}
val t2: PartialFunction[Int, String] = {case 2 => "I am 2"}
val t = t1 orElse t2
t(1)
> I am 1
t(2)
> I am 2
作为HttpService
apply方法签名接受PartialFunction
,我认为你可以这样做:
val usersService: PartialFunction[Request, Task[Response]] = {
case request @ GET -> Root / "users" / IntVar(userId) =>
Ok("test")
}
val versionService: PartialFunction[Request, Task[Response]] = {
case req @ GET -> Root / "version" => {
val jsonmap = ("origin" -> req.remoteAddr.getOrElse("unknown ip"))
Ok(compact(render(jsonmap)))
}
}
val service = HttpService {
usersService orElse versionService
}
关于scala - 在 Scala 中使用运算符 orElse 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38863103/
是 orElse 的“其他”部分吗?当由于另一个事务写入 TVar 而重试事务时调用它已阅读,或仅当 retry 被显式调用? 最佳答案 如果你有 orElse a b 然后 b仅在 retry 时运
我正在尝试学习Java 8 功能可选。我对Optional.orElse的工作原理感到困惑。这是我尝试过的: public class OptionalsExample { public st
当在 map 步骤之一中得到空列表时,如何调用 orElse? MyObj myObj = new MyObj(); myObj.setAaa("aaa"); myObj.setBbb("bbb");
让我们定义一个 PartialFunction[String, String]和一个 PartialFunction[Any, String] 现在,给定 orElse 的定义 def orElse[
是使用PartialFunction的 orElse或多或少比使用大 match 更有效期间阻止 apply时间? 为了说明这个问题,是: val pf = { case "a" => "A"} or
使用 Either 的惯用方式是什么?在斯卡拉?例如当使用 Option我可以使用 orElse如果当前是 None,则获取下一个可选值的方法.但是如何使用 Either以同样的方式?我没有找到像 o
or 和 OrElse 有什么区别? if temp is dbnull.value or temp = 0 产生错误: Operator '=' is not defined for type 'D
有时我想返回包含在选项中的对象的属性值,但我无法使用 getValue.orElse(otherValue) 轻松做到这一点。 例如,我正在映射内联属性,并且我想使用像 object.get.prop
我很好奇为什么可以这样做(至少在 Java 8 上): Optional.of(null).orElse("something"); Optional.of(null) 基本上是一个有保证的空指针。允
大家好,使用 gzip 的工作人员,我遇到了一个问题。我有一个 GzipWrapper 并且有很多 if else,是否可以使用Optional.orElse 做类似的事情?通过简单的可选示例,我将其
我在使用Optional和匿名类时遇到了一个奇怪的问题: public class Foo { interface Bar { } void doesNotCompile()
是否可以写一个概括的orElse方法来自 Option这需要可变数量的参数?也就是说,而不是: lazy val o1 = { println("foo"); None } lazy val o2 =
我有以下代码打击。我试图找到一种方法来避免 if (something.isPresent())行并声明 Optional something以及。相反,我想链接 Optional.orElse()方
我需要一些关于以下代码片段的帮助。如果raiseWorkQueueTask可以找到任何null != previousPeriod.getOldId()和,则它应该返回通知riseWorkQueue
我正在寻找在 null 情况下提供默认值的良好语法。在涉及 API 的 Java 中,我习惯于使用 Optional 而不是 null,并且想知道 C# 更好的可空类型是否有等效的类型? 可选项 Op
这个问题在这里已经有了答案: Difference between `Optional.orElse()` and `Optional.orElseGet()` (9 个回答) When I nee
我正在尝试在 orElse 中使用 Stream 并且难以理解错误。 collectorConfiguration = Optional.ofNullable(recapPlacement.getAt
我正在使用流过滤器 findAny.orElse,但它没有像我预期的那样工作,所以我想我不了解它的真正工作原理。这是我的代码 return Stream.of(getObjectAttributeVa
在下面的代码中,我试图理解 java-8 中提供的 Optional 的概念。我创建了以下示例来掌握 orElse() 背后的原理。执行代码后,执行了defaultMethod()的主体,并返回 ne
我正在使用此逻辑并尝试在未找到员工时返回 new Employee()。 但是,当 request.getId() 为 null 时,它会抛出异常,我正在等待它执行 orElse() 部分.然而,事实
我是一名优秀的程序员,十分优秀!