当前位置:  开发笔记 > 编程语言 > 正文

跨保护模式共享定义

如何解决《跨保护模式共享定义》经验,为你挑选了1个好方法。

说我有一个功能:

arbitrary :: String -> String -> Maybe String
arbitrary st1 st2 | (st1 == st2) = Just "foo"
                  | (arbitrarily_complex_calculation == 7) = Nothing
                  | otherwise = Just $ show arbitrarily_complex_calculation

如何在两个保护块之间共享任意complex_calculation?这可以通过let/ where或者我必须编写辅助函数来完成吗?



1> Zeta..:

是的,一个where条款对警卫有效(并且经常使用):

arbitrary :: String -> String -> Maybe String
arbitrary st1 st2 
  | st1 == st2 = Just "foo"
  | acc ==  7  = Nothing
  | otherwise  = Just $ show acc
 where 
   acc = arbitrarily_complex_calculation

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有