Copyright (C) 2000-2012 |
GNU Info (emacs-lisp-intro.info)Prevent confusion`let' Prevents Confusion ------------------------ The `let' special form prevents confusion. `let' creates a name for a "local variable" that overshadows any use of the same name outside the `let' expression. This is like understanding that whenever your host refers to `the house', he means his house, not yours. (Symbols used in argument lists work the same way. Note: The `defun' Special Form.) Local variables created by a `let' expression retain their value _only_ within the `let' expression itself (and within expressions called within the `let' expression); the local variables have no effect outside the `let' expression. Another way to think about `let' is that it is like a `setq' that is temporary and local. The values set by `let' are automatically undone when the `let' is finished. The setting only effects expressions that are inside the bounds of the `let' expression. In computer science jargon, we would say "the binding of a symbol is visible only in functions called in the `let' form; in Emacs Lisp, scoping is dynamic, not lexical." `let' can create more than one variable at once. Also, `let' gives each variable it creates an initial value, either a value specified by you, or `nil'. (In the jargon, this is called `binding the variable to the value'.) After `let' has created and bound the variables, it executes the code in the body of the `let', and returns the value of the last expression in the body, as the value of the whole `let' expression. (`Execute' is a jargon term that means to evaluate a list; it comes from the use of the word meaning `to give practical effect to' (`Oxford English Dictionary'). Since you evaluate an expression to perform an action, `execute' has evolved as a synonym to `evaluate'.) automatically generated by info2www version 1.2.2.9 |