Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Обьясните пожалуйста про self


Автор: Rybick 31.1.2012, 23:00
пишу очень редко самые простые скриптики, вот решил разобраться посерьезней но уперся в  self  
объясните пожалуйста не как не могу понять 

Автор: k0rvin 31.1.2012, 23:56
А в чем собственно суть вопроса? Что объяснить?

Автор: Rybick 1.2.2012, 18:43
не пойму как он работает вообще суть его работы, для чего он
если можно на простом  примере из книги Изучаем Ruby я так про него нечего и не понял

Автор: Torkvemada 22.2.2012, 23:04
Чтобы понять для чего нужен self(this в с++) нужно понимать разницу между классом и обьектом.
http://nashbridges.me/introducing-ruby-oop там же примеры

Автор: GrayCardinal 8.3.2012, 06:36
нету self в ruby

ЗЫ
 можете минусовать

Добавлено через 4 минуты и 14 секунд
А... уперся... Поясню, тогда не минусуем а плюсуем.
Нефиг упираться.

Лови переменную класса
Цитата

class
      def initialize
         @var1 = "var aga"
      end     
end

нету self нету

Автор: WarHog 20.3.2012, 22:56
GrayCardinal, посмеялся.

Лови:
Код

class Foo
  puts self
end
# => Foo

class Foo
  def bar
    puts "I'm exist: #{self}"
  end
end
Foo.new.bar
# => I'm exist: #<Foo:0x88da3d0>

Автор: GrayCardinal 31.3.2012, 18:23
WarHog
Аналогично. А нах вот это собственно ?

Автор: WarHog 1.4.2012, 10:48
Цитата

нету self в ruby

Автор: earthshaker 16.4.2012, 10:18
Вызываю методы самого объекта внутри объекта через self. Не знаю, обязательно ли его ставить, не пробовал. А так работает. И еще так можно передать объект куда то в другие методы.

Автор: source777 16.4.2012, 22:25
Цитата(earthshaker @  16.4.2012,  10:18 Найти цитируемый пост)
Не знаю, обязательно ли его ставить, не пробовал.

Не обязательно, если у тебя локальная область видимости не пересекается с областью видимости self. А если пересекается, то обязательно.
Например:
Код

class Test
  attr_accessor :param

  def initialize(param)
     self.param = param
  end
end

Test.new('!').param

Но лучше ставь. Помешать - не помешает, а к читабельности +1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)