none
Como llamar a una variable de una funcion RRS feed

  • Pregunta

  • Buenas tengo esta funcion y no se como llamar por ejemplo a la variable Sg

    gracias

     Private Function getBrix() As Decimal
    
            Dim sg, sg2, sg3, brix As Decimal
            sg = 1.114
            sg3 = Math.Pow(sg, 3)
            sg2 = Math.Pow(sg, 2)
            brix = (182.9622 * sg3) - (777.3009 * sg2) + (1264.517 * sg) - 670.1832
            Return brix
        End Function

    jueves, 4 de abril de 2019 18:35

Respuestas

  • Te refieres a pasarle el valor de la variable por parámetro?

    Seria así:

        Private Function getBrix(ByVal _sg As Decimal) As Decimal
    
            Dim sg, sg2, sg3, brix As Decimal
            sg = _sg
            sg3 = Math.Pow(sg, 3)
            sg2 = Math.Pow(sg, 2)
            brix = (182.9622 * sg3) - (777.3009 * sg2) + (1264.517 * sg) - 670.1832
            Return brix
        End Function
    

    • Marcado como respuesta Diablo_Rojo viernes, 5 de abril de 2019 17:06
    jueves, 4 de abril de 2019 19:01
  • El lenguaje está especialmente diseñado para que eso sea imposible. Se llama el "alcance" de una variable, y se refiere a los sitios donde las variables son visibles. Las variables locales, es decir, definidas dentro de un método solo son alcanzables dentro de ese método. El compilador impide expresamente que las puedas llamar desde fuera del método.

    Si necesitas leerlas desde fuera, significa que algo está mal en tu diseño. De hecho, cuando estás ejecutando algo fuera del método las variables ni siquiera existen, porque se asignan en el Stack al entrar en el método y se quitan del Stack cuando el método termina. Así que una vez estás fuera ya no existen esas variables.

    Si quieres pasar desde fuera el valor de la variable, lo que hay que hacer es convertirla en parámetro del método en lugar de definirla como variable local:

    Private Funcion getBrix(sg As Decimal) As Decimal

    ...

    jueves, 4 de abril de 2019 19:03

Todas las respuestas

  • Te refieres a pasarle el valor de la variable por parámetro?

    Seria así:

        Private Function getBrix(ByVal _sg As Decimal) As Decimal
    
            Dim sg, sg2, sg3, brix As Decimal
            sg = _sg
            sg3 = Math.Pow(sg, 3)
            sg2 = Math.Pow(sg, 2)
            brix = (182.9622 * sg3) - (777.3009 * sg2) + (1264.517 * sg) - 670.1832
            Return brix
        End Function
    

    • Marcado como respuesta Diablo_Rojo viernes, 5 de abril de 2019 17:06
    jueves, 4 de abril de 2019 19:01
  • El lenguaje está especialmente diseñado para que eso sea imposible. Se llama el "alcance" de una variable, y se refiere a los sitios donde las variables son visibles. Las variables locales, es decir, definidas dentro de un método solo son alcanzables dentro de ese método. El compilador impide expresamente que las puedas llamar desde fuera del método.

    Si necesitas leerlas desde fuera, significa que algo está mal en tu diseño. De hecho, cuando estás ejecutando algo fuera del método las variables ni siquiera existen, porque se asignan en el Stack al entrar en el método y se quitan del Stack cuando el método termina. Así que una vez estás fuera ya no existen esas variables.

    Si quieres pasar desde fuera el valor de la variable, lo que hay que hacer es convertirla en parámetro del método en lugar de definirla como variable local:

    Private Funcion getBrix(sg As Decimal) As Decimal

    ...

    jueves, 4 de abril de 2019 19:03