﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
713	Llamar a un método de una clase desde el constructor	Javier Portugal	Víctor de Buen Remiro	"Hola,

Simulando clases con NameBlocks puedo hacer lo siguiente: 
Tengo una clase que define que para cada objeto hay un conjunto con elementos y para llenar estos conjuntos lo quiero hacer con un texto que codifica estos elementos (la cantidad en el ejemplo, podría tener más datos). Es decir, puedo llamar al método AddItemsFromCodif desde el 'constructor'

{{{
NameBlock Objeto.New(NameBlock args) 
{
  [[ 
    Text _.codif = args::_.codif;
    Set _.items = Copy(Empty);
    Real AddItemsFromCodif(Real void) {
      Text val_ = Sub(_.codif,2,TextLength(_.codif));
      Real val = Eval(""Real ""+val_);
      Set For(1, val, Set (Real i) {
        Set Append(_.items, SetOfReal(i))
      });
      val
    };
    Real _numItems = AddItemsFromCodif(0)
  ]]
};

NameBlock miObj = Objeto.New(
[[
  Text _.codif = ""P2""
]]);
}}}

Sin embargo con clases no puedo hacer lo siguiente:
{{{
Class Objeto
{
   Text _.codif;
   Set _.items = Copy(Empty);
   Real AddItemsFromCodif(Real void) {
     Text val_ = Sub(_.codif,2,TextLength(_.codif));
     Real val = Eval(""Real ""+val_);
     Set For(1, val, Set (Real i) {
        Set Append(_.items, SetOfReal(i))
     });
     val
   };
   Real _numItems = AddItemsFromCodif(0)
};

Objeto miObj =
[[
  Text _.codif = ""P2""
]];
}}}
Da el error de que todavía no existe el atributo _.codif
''_.codif no es un objeto valido para el tipo Text.''

Estando obligado a hacer:
{{{
Class Objeto
{
   Text _.codif;
   Set _.items = Copy(Empty);
   Real AddItemsFromCodif(Real void) {
     Text val_ = Sub(_.codif,2,TextLength(_.codif));
     Real val = Eval(""Real ""+val_);
     Set For(1, val, Set (Real i) {
        Set Append(_.items, SetOfReal(i))
     });
     val
   }
};

Objeto miObj =
[[
  Text _.codif = ""P2""
]];
Real miObj::AddItemsFromCodif(0);
}}}

Creo que sería deseable que se pueda hacer lo anterior. ¿Es posible? ¿Se recomienda la programación del último ejemplo?

"	doubt	closed	highest	OOP Implementation	OOP	2.0.1	major	fixed		
