Funciones personalizadas

Link to funciones-personalizadas

A veces las funciones que Crafttweaker te proporciona no son suficiente. Aquí te enseñamos como escribir tus propias funciones. Puedes nestear funciones dentro de otras

Sintaxis básica

Link to sintaxis-básica

Generalmente, declaras una funcion usando:

ZenScript
Copy
function Nombre ([argumentos[as tipo]]) [as tipoDeDevolucion]{
    [Código]
    [return VALOR;]
}

Las cosas entre claudators son opcionales, dependiendo de lo que quieras conseguir. Vamos a mirar funciones más específicas

Funciones estáticas

Link to funciones-estáticas

Static functions are created before the script is run and can be accessed from anywhere in the script.
You can even access functions declared outside the script using the cross-script reference.

Funciones void son aquellas que no devuelven un valor

ZenScript
Copy
//ejecuta la función uno sin argumentos
uno();

//llama la funcion dos() con el String "Hola Mundo" como argumento
dos("Hola Mundo");


//crea la funcion uno() sin argumentos requeridos
function uno() as void{
   //llama la función dos() con "" como argumento
    dos()("");
}


//crea la funcion dos() con un String requerido como argumento
function dos()(a as string){
    //printea el argumento 10 veces
    for i in 0 to 10{
        print(a);
    }
}

Funciones que Devuelven Valores

Link to funciones-que-devuelven-valores

También puedes especificar un valor que devuelve la función. Se recomendia usar la palabra clave as para definir el tipo que debe ser devuelto.

ZenScript
Copy
//ejecuta sumar() con 1 y 99 como argumentos
val resultado = sumar(1,99);
print(resultado);

//También puedes eliminar la necesidad de una variable
print(sumar(2,64));

//crea la funcion sumar con dos parametros (Integers) y configura el tipo de devolucion a Integer.
function sumar(a as int, b as int) as int {
// suma los dos valores
return a + b;
} 

Default arguments

Link to default-arguments

You can also set some parameters default value. These parameters can be ignored and use default value when you call the function.

ZenScript
Copy
function name(a as int, b as int = 2, c as int = 3) as void {
    print(a + b + c);
}

name(1); // print 6 [1 + 2 (default) + 3 (default)] 
name(1, 3); // print 7 [1 + 3 + 3 (default)] 
name(1, 1, 4); // print 6 [1 + 1 + 4] 
  • You can use bracket handlers and functions for default arguments. But variables are not allowed.
  • Once a parameter has a default argument, the parameters after it also require a default argument.

Functions as variables

Link to functions-as-variables

You can also use functions like variables. In this case, they will be created as separate classes. Other than that, they work pretty much the same as static functions, you call them by their variable name.
You can even use them as global variables this way.

If you need to cast the method (as you do for globals) you can use this:

Copy
global addition as function(int, int)int = function (a as int, b as int) as int {
    return a + b;
};

print(addition(1,2));