where

Posted 牧羊龟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了where相关的知识,希望对你有一定的参考价值。

where是一种语法结构,允许将变量绑定到函数的末尾,以便整个函数都可以访问它,包括所有的御林军
如下

bmiTell :: ( RealFloat a ) => a -> a -> String
bmiTell weight height
  | weight / height ^ 2 <= 18.5 = "underweight"
  | weight / height ^ 2 <= 25.0 = "normal"
  | weight / height ^ 2 <= 30.0 = "fat"
  | otherwise = "whale!"

这里我们重复同一个表达式三次,如果我们可以计算一次,将它绑定到一个变量,并使用变量而不是表达式,那将是理想的,如下

bmiTell :: ( RealFloat a ) => a -> a -> String
bmiTell weight height
  | bmi <= skinny = "underweight"
  | bmi <= normal = "normal"
  | bmi <= fat = "fat"
  | otherwise = "whale!"
  where bmi = weight / height ^ 2
        skinny = 18.5
        normal = 25.0
        fat = 30.0
  • 将where关键字放在御林军之后(通常最好将其与其余竖条对其),然后定义几个变量。
  • 这些变量在御林军上是可见的,这样就不用重复了,还提升了可读性
  • 在函数的where部分中定义的变量只在该函数中可见

where部分可以使用模式,如下

initials :: String -> String -> String
initials firstName lastName = [f] ++ "." ++ [l]
  where (f : _) = firstName
        (l : _) = lastName

where部分可以定义函数,如下

calcBmis :: (RealFloat a) => [(a, a)] -> [a]
calcBmis xs = [bmi w h | (w, h) <- xs]
  where bmi weight height = weight / height ^ 2

where部分可以嵌套

在where部分中创建一个函数,并定义一些辅助函数,然后在每个函数中定义其他辅助函数,这是非常常见的

mysql on和where区别

参考技术A 其实没啥区别,都是在后面写条件,但是区别在于on必须用于join后面,作为关联条件,但是用where做关联查询,那么表之间不能用join连接,以逗号分割表,where后面直接写关联条件且只是inner join的效果

以上是关于where的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 的 `where` 和 `or_where`

mysql on和where区别

三.SQL WHERE 子句(where)

where 后面可以接聚合函数吗

laravel 选择 where 和 where 条件

BigQuery 错误:遇到““WHERE”“WHERE”“[关闭]