Similar a JSON. Estructura de datos predefinidos.



  • Buenas,
    estoy viendo el curso intermedio de matr, pero no siento que sea correcto avanzar si realmente no sé algo.

    Estoy haciendo una app tipo diccionario, donde se ingresa una palabra y se busca en una lista predefinida.

    En JS esto sería muy sencillo

    Palabras {
        hola: {
            definicion: "es un saludo"
            sinonimos: ["Hola1","Hola2"]
        }
        chau: {
            definicion: "se usa para despedirse"
            sinonimos: ["chau1","chau2"]
        }
    }
    

    Y accedemos a las definiciones usando palabras[word].definicion, donde word es la palabra introducida por el usuario.

    La pregunta es, ¿cómo creo esa estructura de datos en Matr?
    ¿se puede usar JSON en este lenguaje?

    Gracias de antemano

    Edit:
    Vi que está el tipo de dato Map, pero la documentación solo muestra cómo declarar las variables y su tipo, pero nunca cómo darles un valor o su sintaxis.



  • Hola @Lottie ,

    Para definir esa estructura en mat|r script lo debes realizar a traves de las estructuras de datos Model. La definicion de la misma seria:

    Model Result {
        Map<Message> palabras
    }
    
    Model Message {
        String definicion
        Array<String> sinonimos
    }
    

    y accederias a los atributos de la siguiente manera:

    Rule example {
        Result result = Result()
        result.palabras = {} 
        result.palabras.set("hola", Message(definicion: "es un saludo", sinonimos: ["Hola1", "Hola2"]))
        result.palabras.set("chau", Message(definicion: "se usa para despedirse", sinonimos: ["chau1", "chau2"])
    
        Message hola = result.palabras.get("hola")
        Message chau = result.palabras.get("chau")
    }
    

    y en JSON, esta estructura seria la siguiente:

    {
        "palabras" : {
            "hola" : {
                "definicion" : "es un saludo",
                "sinonimos" : ["Hola1", "Hola2"]
            },
            "chau" : { 
                "definicion" : "se usa para despedirse",
                "sinonimos" : ["chau1", "chau2"]
            }
        }
    }


  • Gracias @sergio-f, entiendo.
    Entonces, en teoría, ¿esto estaría bien?
    0_1554936843994_Screenshot_1.png
    Lo importante sería,
    cada vez que se ejecuta la rule "iniciarbusqueda", todas las palabras y definiciones se cargan y luego se selecciona una de ellas para pushear a la experiencia.

    Creo que no es el metodo más efectivo... o una vez que se inicia la app todas las reglas se cargan en memoria?

    No creo que sea buena idea setear todas las definiciones cada vez que se realiza una búsqueda.



  • Deberías almacenarlo en la persistencia en la nube para que quede almacenado y luego buscar esos datos para guardarlos en una variable de modulo o global. De esa manera, no tendrás que instanciar cada vez que realizas una búsqueda el modelo.

    Saludos!