Pull to refresh

Comments 21

ох. я за вами не успеваю ))
Самое смешное, что в то время как пишу статьи по .NET жду ваши, так как сейчас подсел прямо таки на рельсы и руби. Спасибо.
Не менее смешно, что мне жутко интересен C#, но, к сожалению, ваши статьи уже «не умещаются» в голове с этим Руби :(
ExtraCat = Struct.new("ExtraCat", :name, :age, :weight)
    lucky = ExtraCat.new("Lucky", 2, 4)

По-моему пример не окончен, не показано собствеено как работать c lucky. Можно попробовать puts lucky.name и lucky.age += 1, но не уверен, что именно такой синтаксис
>Можно попробовать puts lucky.name и lucky.age += 1
Нужно:) Да, синтаксис именно такой.
Нашел еще альтернативу lucky[:name] равносильна (насколько я могу судить) lucky.name, но главное вместо :name может быть переменная, чего, по-моему в записи lucky.name сделать нельзя
Не конструктор, а порождающий метод (глубже не буду).
Углубляясь в модули

Перелистнем на одну каплю назад и вспомним, что такое модули и как их применять, в частности, обратим внимание на примеси и пример, приведенный там.
Но что случится при смешивании с нашими методами модуля? Если вы думаете, что будут включены как методы класса, то Руби так не поступает. Для этого можно сделать так:


Смотря как модмешивается модуль. Если это include — то будут instance-методы, если это extend — то — синглтон-методы. При этом записи:

не дописал, опять отправилось по клавишам случайно.

При этом записи:

class << self    # Здесь self это MyClass
  include MyMod
end

и

extend MyMod

эквиваленты, и обе создают синглтон-методы для «сущности». Если сущностью является класс, то будет создан метакласс, который будет содержать методы класса. Если сущность — это инстанс, то будет создан virtual-класс, который будет хранить методы инстанса. Кстати, класс — тоже инстанс (класса Class), поэтому первая конструкция, в которой используется include (который добавляет инстанс-методы) эквивалентна второй.

И сам include, как я уже отмечал, создает прокси-класс со ссылкой на подмешиваемый модуль.

P.S> для начального изучения эти механизмы не столь важны, но привожу, поскольку знать это тоже нужно будет.
Лучше писать не def SuperCat.big_cat, а def self.big_cat, чтобы не пришлось всё переименовывать, когда сменишь имя класса.
а чтобы не писать каждый раз self, можно и

class << self
  # и здесь методы класса
end
pussy = HyperCat.new do
    self.name = "Pussy"
end

Лучше заменить на:
pussy = HyperCat.new do
    @name = "Pussy"
end
а где-нибудь упоминалось, что почти все взято с книги Хэла Фултона? причем в предыдущих постах еще было что-то свое, а в этом почти копипаст…
UFO just landed and posted this here
UFO just landed and posted this here
угу, потом поделитесь впечатлениями?
UFO just landed and posted this here
а зачем именно внутри этого блока? делайте где -то в другом месте, а уже результат выводите на экран. если я правильно понял.
UFO just landed and posted this here
> Windows Live Writer + Visual Studio + VSPaste + HTML Snippet + PowerGREP + регулярные выражения + некоторая работа ручками

мне кажется, по количеству действий Gvim (в том числе под виндами) будет давать результат несколько быстрее: меню Синтаксис -> Сделать HTML с подсветкой. Пробелы он превращает в  , такой умница.
APTANA IDE имхо вполне вариант для разработки и подсветка кода там есть:)
Sign up to leave a comment.

Articles