No comprendo ejemplo

Foros Néfele 4 Harbour Foros Dudas No comprendo ejemplo

Topic Resolution: Resolved
  • Este debate tiene 6 respuestas, 3 mensajes y ha sido actualizado por última vez el 4 años, 2 meses por DanielDaniel. This post has been viewed 645 times
Mostrando 1 respuesta al debate
  • Autor
    Entradas
    • #1100
      DanielDaniel
      Participante

      Hola Foro,

      Quiero aprovechar el ejemplo que aparece en Nefele_samples en el CreaBBDD.prg pero hay cosas que no entiendo, tal vez alguno pueda explicarme las lineas que pongo a continuacióní, porque incluyen una forma de codificar que desconozco.

      1) LOCAL hBBDD := {=>} <----------------------- qué tipo de array es este?

      2) LOCAL aTodos := RecuperaBBDD()["Articulos"] <- ¿que función cumple ["Articulos"]  luego de nombrar una función que por su definición no recibe parámetros?

      FOR each hItem IN aTodos
      if hItem["familia"] == nFamilia <--------------------  no comprendo qué tipo de dato es hItem, intenté hacer   oCGI:Console(hItem) pero no muestra nada, pero si pongo oCGI:Console(hItem["familia"])  aparecen los números de las familias o CGI:Console(hItem["nombre"])  aparecen los nombres de los artículos.
      AAdd( aSeleccion, hItem )
      endif
      NEXT

      Muchas gracias desde ya

      Daniel

       

      Loading spinner
    • #1102
      Alfredo SanzAlfredo Sanz
      Superadministrador

      Hola Daniel.

      Es un tipo de datos conocido como Hash.

      Son muy parecidos a las matrices o arrays, pero con la peculiaridad de que puedes hacer referencia a los elementos, no por un número, sino por un nombre

      Con arrays tendríamos esto:

      aDatos := {}

      aAdd( aDatos, Alfredo)

      oCGI:Console( aDatos[1])

      y nos mostraría Alfredo en el nefele console

      Con Hasesh lo haríamos así

      hDatos := {=>}

      hDatos["nombre"] := "Alfredo"

      oCGI:Console( hDatos["nombre"])

       

       

      Loading spinner
      • #1120
        DanielDaniel
        Participante

        Alfredo,

        Mucha gracias por tu ayuda, me quedó clarísimo.

        Con respecto a la pretunta 2,

        2) LOCAL aTodos := RecuperaBBDD()["Articulos"] <- ¿que función cumple ["Articulos"] luego de nombrar una función que por su definición no recibe parámetros?

        Tu podrás explicarme o indicarme donde leer sobre esa sintaxis?

        Desde ya muchas gracias

        Saludos

        Loading spinner
        • #1129
          Pedro AmaroPedro Amaro
          Superadministrador

          Como comento Fredy esto son Hash, que es una especie de Array en que cada elemento esta compuesto por un nombre y un valor.

          Yo lo asemejo mucho a un JSon en memoria, de hecho Harbour tiene funciones para pasar de JSon a Hash y viceversa.

          Si te fijas en el proyecto de ejemplo, hay una función CreaBBDD donde hay un JSon con la estructura y los datos de la BBDD que utiliza el ejemplo.

          Este JSon tiene un primer nivel con tres elementos, Version, Familias y Articulos.

          Version es una campo de tipo cadena

          Familia es un campo de tipo Array

          y Articulos es un campo de tipo Array

          La función RecuperaBBDD() nos devolverá un  Hash con todo el JSon, si le añadimos ["Familias"] se aplicará al resultado de RecuperaBBDD() y nos devolverá solo el Array de Familias.

          Seria equivalente a

          Como solo vamos a querer "Familias" pues lo simplificamos con

           

          Loading spinner
        • #1131
          DanielDaniel
          Participante

          xhermita,

          Muchas gracias por tu explicación. Al no saber nada de Json se me hace medio difícil comprender, pero mas hayá de eso, lo que nunca había visto es esta forma de llamar una función RecuperaBBDD()["Familias"], hasta donde yo sabía los parámetros siempre se ponen dentro de los paréntesis.

          Nuevamente gracias

          Saludos

          Loading spinner
        • #1132
          Pedro AmaroPedro Amaro
          Superadministrador

          Es que realmente ["Familia"] no es un parámetro que le paso a la función RecuperaBBDD, se aplica la resultado de la función

          Es lo mismo que

          Los JSon son un formato de fichero que esta bastante estandarizado en el mundo web, yo no lo había utilizado mucho hasta que empezamos con Néfele, podríamos decir que equivale a un fichero XML pero es más sencillo de codificar.

          https://es.wikipedia.org/wiki/JSON#:~:text=JSON%20(acr%C3%B3nimo%20de%20JavaScript%20Object,para%20el%20intercambio%20de%20datos.

          Loading spinner
        • #1134
          DanielDaniel
          Participante

          Perfecto, comprendí.

          Muchas gracias por tu tiempo.

          Saludos

           

          Loading spinner
Mostrando 1 respuesta al debate
  • Debes estar registrado para responder a este debate.

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar