none
dudas function y sub

    Pregunta

  • Hola tenia una duda referente a estos dos términos,sé diferenciarlos uno retorna un valor y el otro no,pero mi duda es ,Por qué puedo hacer un function exactamente igual que un sub sin devolver nada, un ejemplo simple para que me entendais:

     'Public Sub sumars(var1 As Integer, var2 As Integer)

        '    Dim resultado = var1 + var2
        '    textBox3.Text = resultado

        'End Sub

        Public Function multiplicarff(var1 As Integer, var2 As Integer)
            Dim resultado = var1 * var2
            textBox3.Text = resultado

        End Function

    • Cambiado Sergio Parra miércoles, 28 de septiembre de 2016 5:32 pregunta de vb.net
    martes, 27 de septiembre de 2016 10:19

Respuestas

  • hola

    estas definiendo de forma incorrecta la Function, deberia ser

    Public Function multiplicarff(var1 As Integer, var2 As Integer) as Integer
    
    	Return var1 * var2
    	
    End Function

    y lo usas

    textBox3.Text = multiplicarff(10, 10)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 27 de septiembre de 2016 13:06
  • davidprog,

    Algunas consideraciones:

    1. Un procedimiento Function debe retornar un valor basado en un tipo de dato (AS ReturnType), en caso no se especifique se retorna un valor de tipo Object. Sin embargo, es recomendable prender la instrucción 'Option Strict' para exigir el tipo de dato de retorno.
    2. Un procedimiento Function devuelve un valor mediante la instrucción Return o el nombre del procedimiento. En el ejemplo que muestras no retornas explicitamente un valor, sin embargo al ser Object (el tipo de dato que se retorna) el procedimiento devuelve Nothing.
    3. Un procedimiento (Function o Sub) tiene sentido en la reutilización, sin embargo nota que tu procedimiento acopla el objeto textBox3 al bloque de código lo cuál no es correcto porque no podrás utilizar el procedimiento en cualquier contexto.

    La forma correcta de implementar y llamar un procedimiento Function ya te lo dejó Leandro.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 27 de septiembre de 2016 13:38
  • Tienes el Option Strict en Off, pienso...

    Además, si no fuera así, no sería BASIC.


    Sólo aclarar que la función está correctamente definida. Es legal. Es sintácticamente correcto. El uso de la cláusula option strict ON, obliga al compilador a requerir la declaración del tipo retornado y el return de un objeto de ese tipo.
    martes, 27 de septiembre de 2016 12:45

Todas las respuestas

  • Tienes el Option Strict en Off, pienso...

    Además, si no fuera así, no sería BASIC.


    Sólo aclarar que la función está correctamente definida. Es legal. Es sintácticamente correcto. El uso de la cláusula option strict ON, obliga al compilador a requerir la declaración del tipo retornado y el return de un objeto de ese tipo.
    martes, 27 de septiembre de 2016 12:45
  • hola

    estas definiendo de forma incorrecta la Function, deberia ser

    Public Function multiplicarff(var1 As Integer, var2 As Integer) as Integer
    
    	Return var1 * var2
    	
    End Function

    y lo usas

    textBox3.Text = multiplicarff(10, 10)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 27 de septiembre de 2016 13:06
  • davidprog,

    Algunas consideraciones:

    1. Un procedimiento Function debe retornar un valor basado en un tipo de dato (AS ReturnType), en caso no se especifique se retorna un valor de tipo Object. Sin embargo, es recomendable prender la instrucción 'Option Strict' para exigir el tipo de dato de retorno.
    2. Un procedimiento Function devuelve un valor mediante la instrucción Return o el nombre del procedimiento. En el ejemplo que muestras no retornas explicitamente un valor, sin embargo al ser Object (el tipo de dato que se retorna) el procedimiento devuelve Nothing.
    3. Un procedimiento (Function o Sub) tiene sentido en la reutilización, sin embargo nota que tu procedimiento acopla el objeto textBox3 al bloque de código lo cuál no es correcto porque no podrás utilizar el procedimiento en cualquier contexto.

    La forma correcta de implementar y llamar un procedimiento Function ya te lo dejó Leandro.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 27 de septiembre de 2016 13:38
  • NO. Lo que tuttini afirma es incorrecto. Es obtuso.
    martes, 27 de septiembre de 2016 13:58
  • >>Lo que tuttini afirma es incorrecto. Es obtuso.

    porque ? podrias explicarte, digo asi aprendemos, porque decir que algo esta mal sin explicarse no suma para nada


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 27 de septiembre de 2016 14:37
  • NO. Lo que tuttini afirma es incorrecto. Es obtuso.

    ¿Por qué es incorrecto?, ¿por qué es obtuso?.

    martes, 27 de septiembre de 2016 19:09