有时我会写这样的代码
solveLogic :: Int -> Int -> Int
solveLogic a b =
let
x = 1
brainiac
| a >= x = 1
| a == b = 333
| otherwise = 5
in
brainiac
Run Code Online (Sandbox Code Playgroud)
每次我都强烈要求编写这些东西而不需要"brainiac"功能,如下所示:
solveLogic :: Int -> Int -> Int
solveLogic a b =
let
x = 1
in
| a >= x = 1
| a == b = 333
| otherwise = 5
Run Code Online (Sandbox Code Playgroud)
哪个代码更像是"Haskellish".有没有办法做到这一点?
huo*_*uon 46
是的,使用where条款:
solveLogic a b
| a >= x = 1
| a == b = 333
| otherwise = 5
where
x = 1
Run Code Online (Sandbox Code Playgroud)
aug*_*tss 13
当我想要守卫作为表达时,我会使用这个有点丑陋的黑客
case () of
_ | a >= x -> 1
| a == b -> 333
| otherwise -> 5
Run Code Online (Sandbox Code Playgroud)