You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vavr Tuple模式匹配使用通配符报错,如何排查?

Vavr Tuple模式匹配失败问题解决

你的问题出在Tuple内部元素的匹配语法使用错误,同时代码里的Tuple2未指定泛型类型,这也会影响匹配逻辑的正确性。

错误原因

你用API.Tuple("foo", $())的方式无法正确匹配Tuple的内部元素,Vavr的模式匹配中,针对Tuple2的结构匹配需要使用专门的$Tuple2匹配器,结合元素级别的匹配条件来实现。

修正后的代码

import io.vavr.API;
import io.vavr.Tuple2;
import static io.vavr.API.*;

public class TupleMatchExample {
    public static void main(String[] args) {
        // 明确指定Tuple2的泛型类型
        Tuple2<String, String> test = Tuple.of("foo", "bar");
        
        String result = Match(test)
                .of(
                    // 使用$Tuple2匹配器,第一个元素匹配"foo",第二个用$()通配
                    Case($Tuple2($("foo"), $()), "baz")
                );
        
        System.out.println(result); // 输出 baz
    }
}

关键说明

  • 必须明确Tuple2的泛型类型(比如Tuple2<String, String>),避免类型擦除导致匹配逻辑失效
  • 使用$Tuple2(a, b)来匹配Tuple2的结构,其中a和b分别对应第一个和第二个元素的匹配条件:
    • $("foo")表示精确匹配第一个元素为"foo"
    • $()表示通配,忽略第二个元素的具体值

补充验证

如果需要匹配任意第一个元素、第二个元素为特定值的情况,可参考以下写法:

String result = Match(test)
        .of(
            Case($Tuple2($(), $("bar")), "matched")
        );

内容的提问来源于stack exchange,提问作者floyergilmour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:33:21