Ahora que sabemos que todas las declaraciones en Scheme están entre paréntesis, y que el nombre de función/operadores se listan primero, necesitamos saber como crear y usar variables, y como crear y usar funciones. Comenzaremos con las funciones.
Although there are a couple of different methods for declaring variables, the preferred method is to use the let* construct. If you're familiar with other programming languages, this construct is equivalent to defining a list of local variables and a scope in which they're active. As an example, to declare two variables, a and b, initialized to 1 and 2, respectively, you'd write:
(let* ( (a 1) (b 2) ) (+ a b) )
o, en una linea:
(let* ( (a 1) (b 2) ) (+ a b) )
Nota | |
---|---|
Tendrá que poner todo esto en una linea si está usando la ventana de la consola. En general, querrá adoptar una práctica similar para ayudar a hacer sus scripts más legibles. Hablaremos un poco más de esto en la sección espacio blanco. |
Esto declara dos variables locales, a y b, inicializados, que muestra la suma de las dos variables.
Notará que escribimos la suma (+ a b) bajo los paréntesis de la expresión let* , no después de ella.
This is because the let*
statement defines an area in your script in which the declared
variables are usable; if you type the (+ a b)
statement after the (let* …)
statement,
you'll get an error, because the declared
variables are only valid within the context of the let*
statement; they are what programmers call local variables.
la forma general de una declaración let*
:
(let* (variables
)expressions
)
where variables are declared within parens, e.g.,
(a 2)
, and
expressions are any valid Scheme expressions. Remember that the
variables declared here are only valid within the
let*
statement — they're local variables.
Previously, we mentioned the fact that you'll probably want to use indentation to help clarify and organize your scripts. This is a good policy to adopt, and is not a problem in Scheme — white space is ignored by the Scheme interpreter, and can thus be liberally applied to help clarify and organize the code within a script. However, if you're working in Script-Fu's Console window, you'll have to enter an entire expression on one line; that is, everything between the opening and closing parens of an expression must come on one line in the Script-Fu Console window.
Once you've initialized a variable, you might need to change its value
later on in the script. Use the set!
statement to change
the variable's value:
(let* ( (theNum 10) ) (set! theNum (+ theNum theNum)) )
Intente adivinar lo que la declaración de arriba hará, entonces, adelante e introdúzcalo en la ventana de la consola de Script-Fu.
Nota | |
---|---|
The “ |
Ahora que entendemos las variables, trabajemos con algunas funciones. Declare una función con la siguiente sintaxis:
(define (name
param-list
)expressions
)
donde name
es el nombre asignado a esta función, param-list
es una lista espacio -delimitada de nombres de parámetros, y expressions
son una serie de expresiones que las funciones ejecutan cuando se las llama. Por ejemplo:
(define (AddXY inX inY) (+ inX inY) )
AddXY
es el nombre de función y inX
y inY
son las variables. Esta función toma los dos parámetros y los suma juntos.
Si ha programado en otro lenguaje imperativo (como C/C++, Java, Pascal, etc.), podría notar que un par de cosas no están presentes en esta definición de función, cuando la comparas con otros lenguajes de programción.
First, notice that the parameters don't have any “types” (that is, we didn't declare them as strings, or integers, etc.). Scheme is a type-less language. This is handy and allows for quicker script writing.
Second, notice that we don't need to worry about how to “return” the result of our function — the last statement is the value “returned” when calling this function. Type the function into the console, then try something like:
(AddXY (AddXY 5 6) 4)