Let Expressions

2020-05-30  本文已影响0人  christ_yang

Let Expressions

Let表达式是一个非常重要的特性,可以以非常简单、通用、灵活的方式创建并使用局部变量,以使我们的代码风格更好,也可以使编码更方便,我们可以在其内部使用任何绑定,包括嵌套let
注意:let表达式就是一个普通的表达式,它可以在任何允许使用表达式的地方被使用

  1. 语法(syntax):
    let b1 b2 ... bn in e end
    其中:bi是任一绑定,e是任一表达式
let val a = 8
    val b = 9
in
  a+b
end
整个表达式返回:17
  1. 类型检查(type check)和 求值规则(evaluation rules):

实例

fun silly1 (z : int) =
  let val x = if z > 0 then z else 34
    val y = x+z+9
  in
    if x > y then x*2 else y*y
  end

fun silly2 () =
  let val x = 1
  in
    (let val x = 2 in x+1 end) + (let val y = x+2 in y+1 end)
  end
silly2的风格很糟糕,但这里只是想表达let只是一个普通的表达式。

新概念( scope)

let的引入,让我们意识到一个新概率,即绑定的使用是有范围( scope)的限制,如:我们不能在顶级绑定中,使用已定义的let内的定义的绑定。

fun silly3 () =
  let val x = 3
  in x
  end

val bad-x = x
这里的x将是未定义的绑定,它不会使用到在let表达式中定义的任何x
上一篇下一篇

猜你喜欢

热点阅读