Arreglos y Mapas

Aquí te dejamos el código utilizado en esta lección:

//ARREGLOS

RuleContext arrays {
    Rule rule {
        // Array array
        
        Array arString = ['hola', 'chau', 'otro']
        Array arLocation = [Location(), Location()]
        Array arBool = [true, false, true, false]
        
        Integer a = arString.size() // 3
        
        String b = arString.get(2) // "otro"
        
        arString.remove(1) // ["hola", "otro"]
        
        String c = arString.pop() // ["hola"] // c == "otro"
        
        Array arInt = arString.selected() // [] // No tiene seleccionados
        
        arString.setSelected([0]) // Al ejecutar nuevamente selected(), este retornara [0]
        
        Location loc = arLocation.shift() // [Location()] // ademas retorna el elemento retirado
        
        arBool.reverse() // [false, true, false, true]
        
        Array arInteger = [5, -1, 0, 9, 2]
        
        arInteger.sort() // [-1, 0, 2, 5, 9]
        
        arString.removeAll() // []
        
        Array arInteger1 = arInteger.clone() 
        
        Bool c = (arInteger1 == arInteger) // false
        
        Integer int = arInteger.indexOf(9) // 4
        int = arInteger.indexOf(4) // -1
        
        arString.add('otro') // ['otro']
        
        arInteger.set(3, -4) // [-1, 0, 2, -4, 5, 9]
        
        arInteger.push(-1) // [-1, 0, 2, -4, 5, 9, -1]
        
        Array arInteger9 = [1, 2, -3]
        
        arInteger9.concat(arInteger) // [1, 2, -3, -1, 0, 2, -4, 5, 9, -1]
    }
}

//MAPAS

RuleContext mapas {
    Rule rule{
        // Map map
        
        Map mapString = {"a": "hola", "b": "chau", "c": "otro"}
        Map mapInteger = {"a": 1, "b": 2, "c": 3}
        
        Integer a = mapString.size() //3
        
        String b = mapString.get("b") // "chau"
        
        String c = mapString.get("c", "defaultValue") // "otro"
        c = mapString.get("d", "defaultValue") // "defaultValue"
        
        mapString.remove("a") // {"b": "chau", "c": "otro"}
        
        mapString.removeAll() // {}
        
        Map mapInteger1 = mapInteger.clone()
        Bool d = mapInteger1 == mapInteger //false, diferentes referencias
        
        mapInteger.hasKey("a") //true
        mapInteger.hasKey("otro") //false
        
        Array keys = mapInteger.keys() // ["a", "b", "c"]
        
        Array values = mapInteger.values() // [1, 2, 3]
        
        mapInteger.set("key1", 5) //{"a": 1, "b": 2, "c": 3, "key1": 5}
    }
}

//ALCANCE DE EJECUCION DE VARIABLES

//1) VARIABLES GLOBALES

Application {
    String strVar
    
    Integer intVar
    
    Date dateVar
    
    OnInit {
        strVar = "otroValor"
    }
}

RuleContext ruleContext {
    Rule rule {
        strVar = "hola"
    }
}

Module mod {
    void fun () {
        strVar = "chau"
    }
}

Experience Main {
    OnResume {
        strVar = "onResume"
    }
}

//2) CONSTANTES

RuleContext constants {
    Rule rule {
        constant1 = "otro" //no se puede asignar un nuevo valor a una constante
        
        modVar.var2 = -9
        var2 = 7 //Esta variable no puede ser accedida sin el modulo, ERROR
    }
}

//3) Variables de Modulos

Module modVar {
    String var1
    Integer var2
    
    void fun () {
        var1 = "unValor"
        
        var2 = 5
        
        modVar.var1 = "otroValor"
        
        modVar.var2 = 4
        
        param1 = "otro" //esta variable no existe en este contexto, ERROR
    }
}

//4) PARAMETROS DE FUNCIONES

Module params {
    void fun (String param1, Location loc1, Bool param2) {
        param1 = "as"
        
        loc1 = null
        
        param2 = false
    }
}

> Siguiente