| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Ruby: Общие вопросы > Видемость типов в классе |
| Автор: segods 25.2.2008, 03:55 | ||
| Сабж. Есть класс, внем обьявлен хеш @links=Hash.new("qwe"=>"asd") Позже в процедуре def geturl добавляется пара ключ-значение @links.[]=(2,2). При выполнении ruby spider.rb вылетает ошибка: spider.rb:23: warning: parenthesize argument(s) for future version spider.rb:25:in `geturl': undefined method `[]=' for nil:NilClass (NoMethodError) from spider.rb:24:in `each' from spider.rb:24:in `geturl' from spider.rb:44 Если перед @links.[]=(2,2) поставить @links=Hash.new то программа выполняется без ошибок. Обьясните в чем проблема? Может я с видемостью напутал, хотя в def geturl спокойно читаю глобальную @links ... Версия Ruby: ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-linux]
|
| Автор: setq 25.2.2008, 09:27 | ||
Кажется, class-level @xxx и instance-level @xxx значат не одно и то же. В любом случае, тебе необходимо перенести код
в метод initialize . |
| Автор: segods 25.2.2008, 22:30 |
| Да, проблема решилась)) Всем спасибо) |