Поиск:

Ответ в темуСоздание новой темы Создание опроса
> видимость методов в модуле 
:(
    Опции темы
baleogg
Дата 3.12.2010, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 3.12.2010

Репутация: нет
Всего: нет



Доброго дня.
создаю файл с таким содержимым (модуль с одним методом)
файл lib/num.rb
Код

module Num
  def self.abc(a)
    return a
  end
end

в тесте пытаюсь вызывать метод из описанного выше модуля
файл test/test.rb
Код

require 'test/unit'
require 'lib/num'

module NumTest
  include Num
  class DescribeTest < Test::Unit::TestCase
    def test_dummy
      a = abc([0,1,2]) # так ошибка  undefined method `abc`. почему??
      b = Num::abc([0,1,2]) # а так ошибки нет

но, несмотря на то, что я включаю модуль с помощью include, к методу из Num получается обращаться только явно указав путь. Подскажите, где я ошибся?

заранее спасибо
PM MAIL   Вверх
GrayCardinal
Дата 5.12.2010, 13:03 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: нет
Всего: 58



Попробуйте из
def self.abc(a)
"self." убрать. На сколько знаю self. пишут только в классах.



--------------------
PM MAIL WWW   Вверх
source777
Дата 5.12.2010, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



Цитата(GrayCardinal @  5.12.2010,  13:03 Найти цитируемый пост)
На сколько знаю self. пишут только в классах.

неправда


Цитата(baleogg @  3.12.2010,  11:35 Найти цитируемый пост)
Подскажите, где я ошибся?

Знать бы, для начала, что ты хотел сделать... 
Но ожидать, что метод класса, определённый в модуле, будет можно вызывать как метод экземпляра для класса, к которому этот модуль даже не примешивается - весьма и весьма странно.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
GrayCardinal
Дата 7.12.2010, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: нет
Всего: 58



source777, 
А зачем в модулях self ? Или это влияет когда к классу мешаешь ?


--------------------
PM MAIL WWW   Вверх
source777
Дата 7.12.2010, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



Цитата(GrayCardinal @  7.12.2010,  12:29 Найти цитируемый пост)
А зачем в модулях self ? Или это влияет когда к классу мешаешь ? 

И когда примешиваешь влияет и в принципе если надо некоторый метод прямо из модуля вызывать... В общем self в модулях затем же самым зачем и в классах.

Это сообщение отредактировал(а) source777 - 7.12.2010, 19:22


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.