Buenas!.
¿ Qué es una clase exportada ?.
Veréis, estoy probando la clase object. Y creé este ejemplo:
Clase Persona:
Código:
Private $nombre As String
Property nombre As String
Public Sub _new(nom As String)
$nombre = nom
End
Private Function nombre_Read() As String
Return $nombre
End
Private Sub nombre_Write(Value As String)
$nombre = Value
End
Public Sub DiNombre()
Print "Me llamo " & Me.nombre
End
Y el FMain:
Código:
Private grupopersonas As Persona[] = [Object.New("Persona", ["Alberto"]), Object.New("Persona", ["Lucía"])]
Private grupopersonas2 As New Persona[]
Public Sub Form_Open()
MostrarSaludo(grupopersonas)
Print "--------------"
Metodo2()
MostrarSaludo(grupopersonas2)
End
Public Sub MostrarSaludo(grupotmp As Persona[])
Dim unapersona As Persona
For Each unapersona In grupotmp
unapersona.DiNombre()
Next
End
Public Sub Metodo2()
Dim unapersona As Persona
unapersona = New Persona("Alberto")
grupopersonas2.Add(unapersona)
unapersona = New Persona("Lucía")
grupopersonas2.Add(unapersona)
End
La salida fue prácticamente igual.
Cita:
Me llamo Alberto
Me llamo Lucía
--------------
Me llamo Alberto
Me llamo Lucía
La posibilidad que me dio Object fue la de poder declarar el objeto en el propio Array.
( En verdad son practicas similares que encuentro con Python y las intento reproducir en Gambas)
Según dice la ayuda de Gambas:
Cita:This routine works exactly like the NEW operator, except that the class name is specified at runtime and not at compile time.
Supongo que esto lo hace más lento.
Ahora dice también:
Cita:As the class is specified by name, only exported classes can be instanciated.
¿ Exportadas ?. ¿ Son las del propio desarrollador ?.
Ok, encontré export en la ayuda de Gambas, pero eso suele ser para controles.
Cita:Esto significa que la clase será visible desde un programa principal cuando creemos un componente.
Saludos