Старый 07.07.2010, 16:15   #1
Varius
 
Регистрация: 05.07.2010
Сообщений: 7
Репутация: 1
По умолчанию Вопросы по [Ruby]

В этой теме можно задать вопросы по языку [Ruby].
Категория вопросов по сложности: простые/средние.
Для сложных вопросов рекомендуется создавать отдельную тему.
__________________
"Тhе quitеr you bеcоmе, the mоrе yоu аrе аblе tо hеаr."
Varius вне форума   Ответить с цитированием
Старый 01.05.2011, 08:47   #2
lukmus
 
Аватар для lukmus
 
Регистрация: 11.08.2010
Сообщений: 128
Репутация: 20
По умолчанию

я начну пожалуй. Сразу скажу что вопрос идиотский и нетривиальный ни разу, и еще скажу что решить его нельзя.
Как сделать метод у String (неважно будет это метод класса String или у сингелентного класса string-переменной) .to_i! ?
__________________
Контактный XMPP: lukmus[собака]wallstreetjabber.biz
lukmus вне форума   Ответить с цитированием
Старый 01.05.2011, 20:12   #3
dahaka
 
Регистрация: 03.08.2010
Сообщений: 5
Репутация: 0
По умолчанию

lukmus, какая цель при этом преследуется? С практической точки зрения это нецелесообразно, ибо n = s.to_i не будет существенно отличаться от s.to_i!, так как bang-методы не уничтожают объект, а возвращают новый. Соответственно, старый будет уничтожен сборщиком мусора, который неизвестно когда запустится.

Сам был заинтересован созданием подобного метода, но вышеописанных причин мне хватило, чтобы не заниматься его реализацией.
dahaka вне форума   Ответить с цитированием
Старый 01.05.2011, 21:17   #4
lukmus
 
Аватар для lukmus
 
Регистрация: 11.08.2010
Сообщений: 128
Репутация: 20
По умолчанию

Цитата:
Сообщение от dahaka Посмотреть сообщение
lukmus, какая цель при этом преследуется? С практической точки зрения это нецелесообразно, ибо n = s.to_i не будет существенно отличаться от s.to_i!, так как bang-методы не уничтожают объект, а возвращают новый. Соответственно, старый будет уничтожен сборщиком мусора, который неизвестно когда запустится.

Сам был заинтересован созданием подобного метода, но вышеописанных причин мне хватило, чтобы не заниматься его реализацией.
а эти bang-методы их можно реализовать в рамках Ruby т.е. например дописать метод в класс, или они в C-библиотеках пишутся?
__________________
Контактный XMPP: lukmus[собака]wallstreetjabber.biz
lukmus вне форума   Ответить с цитированием
Старый 01.05.2011, 22:14   #5
dahaka
 
Регистрация: 03.08.2010
Сообщений: 5
Репутация: 0
По умолчанию

Не скажу насчет C-либ, но средствами руби они уж точно реализуются. По сути, они ничем не отличаются от обычных методов, за исключением того, что они являются "преобразующими". Это свойство и принято отмечать восклицательным знаком в названии.

p.s. подробнее о bang-методах: http://habrahabr.ru/blogs/ruby/50169/
p.s.2. для общего развития советую просматривать git-репозиторий rubinius, интерпретатора ruby, написанного на ruby. Конкретно здесь можно наблюдать реализацию класса String.
dahaka вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot