[Ruby] Определение "+" и перестановка слагаемых

Anton Farygin rider at altlinux.com
Wed Oct 2 16:50:50 MSD 2002


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Yuri Leikind wrote:

|On Wed, 2 Oct 2002 08:56:33 +0300
|Ilya Palagin <tux at fioc.kz> wrote:
|
|>Здравствуйте,
|>
|>К письму приложен файл с кодом. Интересно было бы узнать, как и где
|>определить метод "+", чтобы скрипт работал с 33-й строкой, т.е. при
|>перестановке слагаемых?
|>
|
|Может я не все понял, но если не хочется писать каждый раз
|
|   cgi.h1{"Some text"} + te.to_s
|
|а хочется писать
|
|   cgi.h1{"Some text"} + te
|
|то можно залезть в класс String и воспользоваться alias_method:
|
|class String
|
|   alias_method :new_plus_name,  :+
|   
|   def+(e) # это у нас расширенный метод +
|      if e.class == PageElement
|         self.new_plus_name e.to_s  # но оригинальный метод
|                                    # сохранился с именем new_plus_name
|      else
|         self.new_plus_name e
|      end
|   end
|end
|
|Вот. Так будет работать. Я правильно понял, это то, что нужно?
|
так тоже будет работать.

Но можно было просто переименовать в PageElement метод to_s в метод
to_str. И все работает.

Единственное НО: это решение я подсмотрел в исходниках Ruby и не знаю,
документированно ли оно ;-)

Rgds,
Rider

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQE9muuqqohfd2vlwKsRAnxaAKCxNgZRijSjfH6Y8qwm+qSa5eob0ACgoaO9
MpXNMbr0tMzBrqtkH+Cz7oo=
=WjrS
-----END PGP SIGNATURE-----





More information about the Ruby mailing list