如何分解重复代码 Haskell ( Maybe & If-Else)

问题描述 投票:0回答:1
  • fruit
    是 Maybe 类型
  • 如果水果是
    apple
    并且很甜(用函数
    testSweet
    测试),则触发流程A
  • 如果不甜或者
    fruit
    什么都没有,则进行过程B

这是虚拟代码,

   case fruit of 
       Just apple ->
           if testSweet apple then 
               <ProcessA>
           else
               <ProcessB>
       Nothing ->
               <ProcessB>

但是这里看起来重复,有什么方法可以解决这个问题吗?我认为最佳方式应该是代码中只有一个

<ProcessB>

haskell
1个回答
0
投票

您可以使用守卫和包罗万象的后备:

case fruit of 
   Just apple | testSweet apple ->
      <ProcessA>
   _ ->
      <ProcessB>
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.