четверг, 29 января 2009 г.

Struct внутри класса

В прошлом посте я упомянул о Struct. Использовать эту конструкцию достаточно просто:
TestRecord = Struct.new("TestRecord", :test1, :test2)
record = TestRecord.new()
И далее record используется как экземпляр класса TestRecord.

Но вот захотелось мне использовать Struct внутри класса. Для этого пришлось явно указать, что TestRecord это также класс:
class Test
class TestRecord < Struct.new("TestRecord", :test1, :test2); end

attr_reader :record

def initialize
@record = TestRecord.new()
end
end
Дело в том, что с помощью Struct.new мы создаем структурный шаблон, который на самом деле является классом, который создается внутри класса Struct.

понедельник, 19 января 2009 г.

Кое-что о ruby

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

Я думал, что сделать метод в классе приватным можно только одним способом, а именно расположить его после ключевого слова private. Однако, есть еще один способ. Можно передать список методов, которые необходимо сделать приватными, в качестве параметров для private. Передавать необходимо в виде символов (Symbol).
О символах, кстати, недавно была статья на Хабре (точнее о различиях строк и символов).

Также узнал что такое Struct. Судя по примерам - достаточно удобная конструкция, надо будет попробовать.