Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Paso De Parámetros A Un Método
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Paso De Parámetros A Un Método 
 
Hola comunidad.

Corrigiendo el comportamiento erróneo de un programa me he dado cuenta de que esto no me da ningún tipo de error:
public sub Main()
  prueba(1,2)
end

public sub prueba(a as string, b as string)
  print "¿No debería dar error?
end


Entiendo que el método prueba esta esperando dos strings y le estoy pasando dos enteros. ¿Es normal esto? ¿No era mejor que me devuelva algún tipo de error?
Se que en otros lenguajes esto no se permite, pero veo que en gambas si. ¿Cual puede ser el motivo? ¿Tiene alguna utilidad? Es que revisando el código de mi programa me di cuenta que tenía un paso de parámetro erróneo y me provocaba un mal comportamiento del programa. Me llevo tiempo descubrir donde estaba el fallo.

Un saludo.
 



 
Guizans - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Paso De Parámetros A Un Método 
 
Evidentemente gambas efectúa una conversión automática del tipo de los valores.


Mira este codigo:
Public Sub Main()
  
  Dim b, c As String
  
   b = 3
   c = 4
  
   Print b * c

End


o tambien este:
Public Sub Main()
  
  Dim b, c As String
  
   b = "3"
   c = "4"
  
   Print b * c

End


...En todo caso, es inmensamente desaconsejado y insensato olvidar las necesarias y requeridas conversiones de los tipos de valores mediante las especificas funciones..  
 



 
última edición por vuott el Martes, 07 Agosto 2018, 23:35; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Paso De Parámetros A Un Método 
 
Comentar que un método pertenece a una clase.  

Vuott:

Citar:

...En todo caso, es inmensamente desaconsejado y insensato olvidar las necesarias y requeridas conversiones de los tipos de valores mediante las especificas funciones.


En "C" supongo que daría problemas, probablemente.  
En Python ocurriría algo similar a gambas. Aunque creo que se le puede obligar al programador a que pase el tipo adecuado.

Tenemos un paso de parámetros a una función. Ahora bien.
- ¿ Qué es lo que le pasamos  ?
- ¿ Qué espera recibir ?

gambas es un lenguaje interpretado al igual que Python. Pero "C" es compilado.
Entonces, el interprete comprende que no es una cadena lo que se le pasa:
"1", "2"...es un número 1, 2...por lo tanto el interprete convierte y evita al programador la conversión.

Esto hace creer al programador que el interprete es algo "supremo".    y va a salvarlo siempre...jeje.
Craso error. El interprete debería regañar al programador!!.

"Oye que me estas pasando un número y no una cadena!".  

Y es que los lenguajes estas cosas no las dice a su manera.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Paso De Parámetros A Un Método 
 
a simple vista veo que los números deben ir entre comillas
pues sino pasas integer mientras se espera string
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Paso De Parámetros A Un Método 
 
vuott escribió: [Ver mensaje]
Evidentemente gambas efectúa una conversión automática del tipo de los valores.


Mira este codigo:
Public Sub Main()
  
  Dim b, c As String
  
   b = 3
   c = 4
  
   Print b * c

End


o tambien este:
Public Sub Main()
  
  Dim b, c As String
  
   b = "3"
   c = "4"
  
   Print b * c

End


...En todo caso, es inmensamente desaconsejado y insensato olvidar las necesarias y requeridas conversiones de los tipos de valores mediante las especificas funciones..  

Vuott, creo que no es el mismo caso. En el que abre el post, efectivamente, el compilador hace el cambio de tipo automáticamente siempre que el caracter pasado sea un dígito (inténtalo con una letra y verás). Pero en el caso del comando Print este hace sus propias conversiones que le permiten 'Imprimir', es decir: convertir a texto, el resultado de lo que se le pase como parámetro.
El efecto es el mismo: no hay diferencia aparente entre los dígitos alfanuméricos y los números, pero quien hace la conversión, creo (only Benoît knows), es distinto.
 




===================
No podemos regresar
 
última edición por shordi el Miercoles, 08 Agosto 2018, 10:17; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Paso De Parámetros A Un Método 
 
Citar:
Esto hace creer al programador que el interprete es algo "supremo".    y va a salvarlo siempre...jeje.
Craso error. El interprete debería regañar al programador!!.

"Oye que me estas pasando un número y no una cadena!".  


Totalmente de acuerdo. Por ejemplo C#, aun usando MonoDevelop, te avisa el propio IDE de que los parámetros que estas pasando a un método no son los correctos.
Está claro que tengo que estar más atento cuando paso parámetros, que sean del mismo tipo para que no me vuelva a pasar lo mismo  

Un saludo.
 



 
Guizans - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Paso De Parámetros A Un Método 
 
a lo mejor es un bug y hay que informarlo, pues no funciona como se espera.
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Programa Paso A Paso: Consultas Médicas.... jsbsan Videotutoriales 1 Jueves, 12 Enero 2012, 04:22 Ver último mensaje
ivanovichenco
No hay nuevos mensajes Ejemplo De Paso De Parámetros Por Referen... Shell General 6 Martes, 12 May 2015, 22:46 Ver último mensaje
vuott
No hay nuevos mensajes Manual Paso A Paso: Páginas Web Realizada... jsbsan General 5 Jueves, 17 Septiembre 2015, 13:51 Ver último mensaje
tercoIDE
No hay nuevos mensajes Proyecto Web En Gambas Paso A Paso. Del Pa... vicr Aplicaciones/Fragmentos de Código 7 Sabado, 17 Junio 2017, 01:17 Ver último mensaje
mckaygerhard
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron