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

如何将pipeline执行结果传入switch语句?

解决方案

你的问题出在变量绑定和管道操作的顺序上,以下是两种正确的写法:

方式一:先赋值再匹配

先把管道操作的结果绑定到变量x,再对x进行switch匹配:

let onWithOptions = (~key: string, eventName, options: options, decoder) =>
  onCB(eventName, key, event => {
    
    ...
    let x = event |> Tea_json.Decoder.decodeEvent(decoder);
    switch x {
    | Ok(a) => Some(a)
    | Error(_) => None
    }

  })

方式二:用匿名函数包裹switch

利用管道操作的特性(将左侧值作为右侧函数的第一个参数传入),把switch逻辑放在匿名函数里:

let onWithOptions = (~key: string, eventName, options: options, decoder) =>
  onCB(eventName, key, event => {
    
    ...
    event |> Tea_json.Decoder.decodeEvent(decoder) |> (x =>
      switch x {
      | Ok(a) => Some(a)
      | Error(_) => None
      }
    )

  })

错误原因说明

  • 第一种尝试里,switch中的x从未被定义,编译器无法识别;
  • 第二种尝试里,你试图在绑定x的同时就用它做匹配,但此时x还未完成绑定,属于无效引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:45:15