close
Warning:
Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.
Ticket #780: ticket_14.HomonymMethods.tol
File ticket_14.HomonymMethods.tol, 1019 bytes (added by pgea@…, 15 years ago) |
|
Line | |
---|
1 | |
---|
2 | Class @ClaseA { |
---|
3 | |
---|
4 | Real valor; |
---|
5 | |
---|
6 | Real GetValor(Real void) { valor }; |
---|
7 | Text Dime(Real void) { "ClaseA" }; |
---|
8 | |
---|
9 | @ClaseA Copy(Real void) { |
---|
10 | @ClaseA new = [[ |
---|
11 | Real valor = GetValor(?) |
---|
12 | ]]; |
---|
13 | //! Se accede al método homónimo de la clase B |
---|
14 | //! cuando una instancia de B me llama... (véase el ejemplo) |
---|
15 | WriteLn(Dime(?)); // --> "ClaseB" |
---|
16 | //! Sin embargo así no... |
---|
17 | WriteLn(""<<Dime(?)); // --> "ClaseA" |
---|
18 | //! o asi tampoco: |
---|
19 | WriteLn(_this::Dime(?)); // --> "ClaseA" |
---|
20 | //! ¿Qué ocurre? |
---|
21 | new |
---|
22 | }; |
---|
23 | |
---|
24 | Static @ClaseA New(Real uValor) { |
---|
25 | @ClaseA new = [[ |
---|
26 | Real valor = uValor |
---|
27 | ]]; |
---|
28 | new |
---|
29 | } |
---|
30 | |
---|
31 | }; |
---|
32 | |
---|
33 | Class @ClaseB { |
---|
34 | |
---|
35 | @ClaseA objetoA; |
---|
36 | |
---|
37 | Text Dime(Real void) { "ClaseB" }; |
---|
38 | |
---|
39 | Static @ClaseB New (NameBlock args) { |
---|
40 | @ClaseB new = [[ |
---|
41 | @ClaseA objetoA = args::objetoA::Copy(?) |
---|
42 | ]]; |
---|
43 | new |
---|
44 | } |
---|
45 | |
---|
46 | }; |
---|
47 | |
---|
48 | // Ejemplo: |
---|
49 | |
---|
50 | @ClaseA miObjetoA = @ClaseA::New(2); |
---|
51 | @ClaseB miObjetoB = @ClaseB::New([[ @ClaseA objetoA = miObjetoA ]]); |
---|
Download in other formats: