当前位置: 首页 > 知识库问答 >
问题:

从vavr中解箱值

农弘毅
2023-03-14

我有一个小函数,可以返回

我的目标是在管道中执行一系列操作,并使用任一实现面向铁路的编程。

import java.util.function.Function;
import io.vavr.control.Either;

@Test
public void run(){

    Function<Float, Either<String, Float>> either_double = num -> {
        if(num == 4.0f)
            Either.left("I don't like this number");
        return Either.right(num * 2);
    };

    Function<Float, Float> incr = x -> x + 1.0f;

    Float actual = 
       Either.right(2f)
        .map(incr)
        .map(either_double)
        .get();

    Float expected = 6.0f;

    assertEquals(expected, actual);
}

这段代码执行一系列简单的操作。首先,我创建一个值为2的任意右,然后递增,最后加倍。这些操作的结果是6。

数学运算的结果是6.0f,但这不是我得到的结果。相反,我得到了正确的(6.0f)。

这是一个阻止代码编译的问题。我在其中一个Monad中装箱了一个值,但在检查了它们的API之后,我没有找到方法取消装箱并按原样获取值。

我曾想过使用getOrElseGet,但即使是这个方法也会返回一个Right。

如何访问存储在要么Monad中的真实值?

共有1个答案

颛孙英才
2023-03-14

使用平面贴图(任意双精度)代替贴图(任意双精度)。

 类似资料:
  • Java 8 的对象函数式扩展,目标是减少代码行数,提高代码质量,提供了持久化集合、错误处理函数式抽象、模式匹配等等。 Vavr 融合了面向对象编程的强大功能,具有功能编程的优雅性和坚固性。 最有趣的部分是拥有功能丰富且持久的集合库,可以与 Java 的标准集合顺利集成。

  • 本文向大家介绍C#装箱和拆箱原理详解,包括了C#装箱和拆箱原理详解的使用技巧和注意事项,需要的朋友参考一下 .NET包含一个特殊的Object类,可以接受任意的数据类型的值,当所传递或所赋值的类型不是一个特定的数据类型时,object类就提供了一种传递参数和赋值的通用方法。赋给object的值必须作为引用类型,并存放砸托管堆中。 装箱: int age = 24; object refAge= a

  • 本文向大家介绍Java中自动装箱、拆箱引起的耗时详解,包括了Java中自动装箱、拆箱引起的耗时详解的使用技巧和注意事项,需要的朋友参考一下 什么是自动装箱,拆箱 先抛出定义,Java中基础数据类型与它们的包装类进行运算时,编译器会自动帮我们进行转换,转换过程对程序员是透明的,这就是装箱和拆箱,装箱和拆箱可以让我们的代码更简洁易懂 耗时问题 在说 Java 的自动装箱和自动拆箱之前,我们先看一个例子

  • 问题是:如何连接许多try/catch,或者在本例中使用VAVR连接许多操作,当一个操作失败时,尝试下一个操作,如此?谢谢

  • 我有方法: 我想返回列表和HTTP状态或TaskError。TASKS\u LIST\u NOT\u FOUND和HTTP状态,但由于两者之一,Json中还有其他内容,如“right”等。 解决方案(感谢@chrylis-谨慎光学)

  • 我试图找出使用VAVR的Try的惯用方法。我正在查看的用例必须执行以下步骤: -获取鞋的列表(调用可以引发选中的异常) -清理每个鞋(调用可以引发选中的异常) -还原每个鞋(调用可以引发选中的异常) -返回清理/还原的鞋的列表 这是我的示例玩具代码,其中processRequest方法购买n双鞋,清洗 我的问题是:如何简化这种逻辑?是否存在可以消除的方法调用?是否可以提高可读性?