能否将Pipe operator与if表达式结合使用?附试错代码
管道运算符与if表达式的结合使用
当然可以将管道运算符(|>)与if表达式结合使用啦!你的代码没能正常运行,是因为写法上有个小误区——管道运算符要求右侧是一个能接收参数的函数,而你直接写的if表达式并不是函数形式。
问题分析
你写的代码:
true |> (if) then "Yes!" else "No"
这里的if then else是一个条件表达式,但它没有接收参数的入口,管道传过来的true没办法和它关联起来,所以会报错。
正确的写法
我们只需要把if表达式封装成一个可以接收参数的lambda函数,就能和管道完美配合了:
基础写法
true |> fun x -> if x then "Yes!" else "No"
这里的fun x ->定义了一个接收参数x的匿名函数,管道把左侧的true传递给x,然后执行条件判断,最终返回"Yes!"。
更复杂的场景示例
如果是处理数值判断,写法也是类似的:
10 |> fun num -> if num > 5 then "大于5" elif num = 5 then "等于5" else "小于5"
核心要点
管道运算符的本质是将左侧的值作为参数传递给右侧的函数,所以只要把if表达式用lambda函数包裹,让它能接收管道传过来的参数,就能实现两者的结合啦!
内容的提问来源于stack exchange,提问作者Jhon Duck
相关产品推荐
相关产品推荐

