美文网首页
Let Expressions

Let Expressions

作者: christ_yang | 来源:发表于2020-05-30 23:03 被阅读0次

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):
  • 类型检查
    在一个包含早期绑定的静态环境(static environment)中,检查每个绑定bi和表达式e,整个Let表达式的类型就是e的类型。
  • 求值规则
    在一个包含早期绑定的动态环境(dynamic environment)中,计算每个绑定bi和表达式eLet表达式的值就是e的值。
    注意:若局部绑定内有与上级绑定相同名称,那么该局部绑定将会屏蔽外部绑定。

实例

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

相关文章

  • Let Expressions

    Let Expressions Let表达式是一个非常重要的特性,可以以非常简单、通用、灵活的方式创建并使用局部变...

  • A Perfect Day for Bananafish 201

    Expressions 1. Let her stew for a bit. stew: ...

  • Day3-A10342

    The article let me know more expressions and words of sci...

  • Day5

    Words and Expressions 1.They won't let me lay a finger on...

  • Chapter 4 The Twenty Habits (3)

    PART 1 Expressions 1. "Let me explain why that won't work...

  • shell-02 SHELL 算术运算

    a=$a+$b的形式: Let 形式: Let expressions 执行一个或多个表达式。表达式中的变量前不必...

  • Expressions

    一直以来我们使用 Ruby的表达式时都表现得十分傲慢。毕竟,a=b+c是标准事物。你完全可以不阅读本章也可以完成大...

  • 关于狗的词汇表达

    Expressions about Dogs Americans use many expressions wit...

  • Useful expressions

    An idle youth,a needy age.少壮不努力,老大徒伤悲。 ​A rotten apple 害群...

  • The expressions of birds

    今天学习了一些关于birds的短语,想起高中教了我三年的英语老师。很多句子他都教过,这么多年了,还是记得很清晰,...

网友评论

      本文标题:Let Expressions

      本文链接:https://www.haomeiwen.com/subject/ouqhyctx.html