- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有任何选项可以对 vavrs 集合应用对象分解?
即类似于 scala 中的代码片段:
val x = List(1, 2, 3)
val t = x match {
case List(a, b, c) => (a, b, c)
}
(在此示例中,我们将列表转换为元组)
我在这里看到了一些与我的案例类似的例子 https://github.com/vavr-io/vavr/issues/1157但看起来当前的语法不同,甚至是不可能的。
最佳答案
Vavr 列表与许多功能程序一样,由头(单个元素,称为 Cons)和尾(另一个列表)组成,可以匹配第一个元素(不是最后一个,除非通过反转列表) ),尽管这会比 Scala/Haskell 更冗长。另外,虽然您可以匹配前 3 个元素,但您只能捕获第一个:
var t = Match(x).of(
Case($Cons($(), $Cons($(), $Cons($(), $()))), (a, tail) -> Tuple(a, tail.head(), x.get(2)))
);
Vavr documentation of Pattern Matching and its limitations :
The current API makes the compromise that all patterns are matched but only the root patterns are decomposed.
编辑:如果您想要列表中正好有 3 个元素,那么您需要确保第三个元素之后的尾部是一个空列表(称为 Nil):
var t = Match(x).of(
Case($Cons($(), $Cons($(), $Cons($(), $Nil()))), (a, tail) -> Tuple(a, tail.head(), x.get(2)))
);
关于java - Vavr 中列表上的模式匹配对象分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55398734/
当函数定义如下时 static Function1 fibonacci = Function((BigInteger value) -> value.equals(BigInt
是否有任何选项可以对 vavrs 集合应用对象分解? 即类似于 scala 中的代码片段: val x = List(1, 2, 3) val t = x match { case List(a,
我正在尝试找出使用 VAVR 的 Try 的惯用方法。我正在查看的用例必须执行以下步骤: - 获取鞋子列表(调用可以抛出一个已检查的异常) - 清洁每只鞋(调用可以抛出一个已检查的异常) - 恢复每双
我有方法: @GetMapping public Either,ResponseEntity>> readAllOrderedByStatus() { var result = taskCru
对于我的 API,我正在解析一个对象并使用 lombok 构建器创建我的对象。其中一个变量是 LocalDateTime 类型的“arrivalTime”,当然它可以为 null。 我以前是这样的:
我有几个Vavr Either ',我想为每个 Either 调用一个具有 Right 值的函数。例如: Either either1 = .. Either either2 = .. Either
把 Google Guava kool-aid 从我们嘴里吐了出来,并一头扎进我们对 VAVR 及其闪闪发光的理想的新迷恋中,假设我们正在 map()ping Stream,在 Traversable
我希望得到您关于如何以功能性方式正确编写此代码的建议: private Option calculate(Integer X, Integer Y) { if (X otherMethod(
我有这样的代码: return validators .stream() .flatMap(v -> v.validate(scoreRequest
考虑到 Vavr 提供 tuples ,是否可以将它们用于 capturing groups在正则表达式中? 以HTTP请求行作为示例字符串进行匹配 GET /resource HTTP 1.1 和匹
使用Vavr的类型,我创建了一对 Some s: var input = Tuple(Some(1), Some(2)); 我想使用 Vavr 的匹配表达式获取整数 1 和 2;这就是我目前的做法:
所以我有一个返回 Vavr Try 的方法: public Try request() {...} request来 self 无法修改的来源。目前,我对 request 的结果进行了平面映射。并取决
我正在使用来自 vavr 的集合图书馆。我有一个这样定义的元素列表: List integers = List.of(1, 2, 3); 如何迭代列表的元素并同时访问索引?在 Groovy 中有一个方
谁能解释一下为什么这段代码: interface Lol { default Try> lol() { return Try.of(List::empty); } } class Lo
VAVR 集合是“不可变的”。 那么,如果我有静态变量,例如,保存所有 WebSocket session ,我将如何使用 VAVR 以使集合是线程安全的? 例如: @ServerEndpoint("
您好,我正在尝试将 vavr 添加到我的项目中,现在我正在为 Vavr.List 对象的正确序列化而苦苦挣扎。下面是我的 Controller : import io.vavr.collection.
是否有一种简洁、惯用的方法来从 Javaslang/Vavr List 创建顺序保留映射? List.toMap() 返回一个普通的 HashMap,所以这并不能实现。我现在拥有的是这样的东西—— l
我正在浏览 Vavr Usage Guide的部分关于使用 Match 和他们称之为“语法糖”的其他“语法糖”执行副作用。这是那里给出的例子: Match(arg).of( Case($(is
我的代码 open class Fail(override val message: String, override val cause: Throwable?) : RuntimeExceptio
这是我的代码片段: public static void main(String[] args) { Try.of(Main::getLines) .onFailur
我是一名优秀的程序员,十分优秀!