[Ruby] self ? Ruby ? this ? Java
Alexander Bokovoy
a.bokovoy на sam-solutions.net
Чт Дек 4 14:14:06 MSK 2003
(Сразу -- ставьте корректный charset -- у Вас US-ASCII выставлен, а само
письмо написано в кодировке KOI8-R. Это общая проблема Yahoo-based
почтовых ящиков, но зачем же страдать от этого читателям рассылки?)
On Thu, Dec 04, 2003 at 02:44:39AM -0800, V V wrote:
> Обращаюсь к специалистам :) в Ruby (и Java тоже :)))
> Есть у меня такой примерчик на Java
> -------------------------------------------
> public class ISOMsg extends ISOComponent
> implements Cloneable, Loggeable, Externalizable
> {
> private WeakReference sourceRef;
>
> /**
> * Creates an ISOMsg
> */
> public ISOMsg () {
> fields = new Hashtable ();
> maxField = -1;
> dirty = true;
> maxFieldDirty=true;
> direction = 0;
> header = null;
> }
> /**
> * Creates a nested ISOMsg
> */
> public ISOMsg (int fieldNumber) {
> this();
> setFieldNumber (fieldNumber);
> }
> ------------------------------------------
> С учетом того что Overload в Ruby отсутствует, мой
> вариант на Ruby такой ...
[skip]
То есть, вопрос стоит так: как организовать overload при инициализации
объекта?
> Вообщем, при вызове self повторный вызов initialize не
> происходит. :( Я конечно могу пойти таким образом
> ...
> self.foo
> ...
> def foo
> ....
> end
>
> но хочется обойтись без этого.
>
> Что можете посоветовать ?
StrongTyping, берется в RAA (raa.ruby-lang.org).
Что-то вроде:
class ISOMsg < ISOComponent
def initialize(*args)
@fields = Hash.new
@maxField = -1
@dirty = true
@maxFieldDirty = true
@direction = 0
@header = nil
overload (args, Integer) { |fieldNumber|
setFieldNumber(fieldNumber)
return
}
overload_default args
end
end
--
/ Alexander Bokovoy
Samba Team http://www.samba.org/
ALT Linux Team http://www.altlinux.org/
Midgard Project Ry http://www.midgard-project.org/
Подробная информация о списке рассылки Ruby