Size: a a a

Ruby, Rails, Hanami | dry-rb

2020 September 23

OA

Ortemy Alexandrovich in Ruby, Rails, Hanami | dry-rb
self.a = a + 1
источник

OA

Ortemy Alexandrovich in Ruby, Rails, Hanami | dry-rb
тогда заработает
источник

VM

Viacheslav Miroshnic... in Ruby, Rails, Hanami | dry-rb
знаю
источник

В

Виталий in Ruby, Rails, Hanami | dry-rb
кста да
источник

VM

Viacheslav Miroshnic... in Ruby, Rails, Hanami | dry-rb
уже пробовал
источник

В

Виталий in Ruby, Rails, Hanami | dry-rb
без self присваивание не работает
источник

VM

Viacheslav Miroshnic... in Ruby, Rails, Hanami | dry-rb
Виталий
без self присваивание не работает
это очень страно, я вообще редко где видел использование self,
тоесть по логике есть сетер, зачем создавать локальную переменую
источник

В

Виталий in Ruby, Rails, Hanami | dry-rb
self нужен именно для присваивания, плюс если это геттер, то в нем не должно быть присвания, а если нужно вернуть локальную переменную, то можно просто переименовать её
источник

В

Виталий in Ruby, Rails, Hanami | dry-rb
def b
   c = a + 1
 end
источник

В

Виталий in Ruby, Rails, Hanami | dry-rb
так работает тоже
источник

В

Виталий in Ruby, Rails, Hanami | dry-rb
источник

В

Виталий in Ruby, Rails, Hanami | dry-rb
точнее лучше в b переименовать))
источник

PM

Peter Mokan in Ruby, Rails, Hanami | dry-rb
Viacheslav Miroshnichenko
интересно почему без вызова с @ не работает
не работает потому что a + 1 не вызывает метод а, если добавить а()+ 1 то заработает
источник

PM

Peter Mokan in Ruby, Rails, Hanami | dry-rb
хотя поведение странное
источник

VM

Viacheslav Miroshnic... in Ruby, Rails, Hanami | dry-rb
class A
 attr_reader :a
 attr_writer :a

def initialize
   @a = 0
 end

 def b
   a = 1
 end
end

ins = A.new
ins.b
p ins.a
# 0

Возможно более наглядный юз кейс.
Просто представь что у тебя переменная которую ты хочешь как то засетить внутри instance метода, а потом использовать извне или в другом методе.
Получается нужно юзать либо self, либо @, что странно как по мне.
Я думал что где то ошибся, но походу руби так и работают.
-1 для атрибут врайтеры, в холиваре что лучше юзать в класе инстанс переменые или aтрибут врайтеры😅
источник

VM

Viacheslav Miroshnic... in Ruby, Rails, Hanami | dry-rb
Peter Mokan
хотя поведение странное
+1
источник

VM

Viacheslav Miroshnic... in Ruby, Rails, Hanami | dry-rb
Надо чекнуть как это в рельсах в activerecord работает, там раньше тоже нужно было self юзать для присваивания, а сейчас не нужно
источник

VM

Viacheslav Miroshnic... in Ruby, Rails, Hanami | dry-rb
Viacheslav Miroshnichenko
class A
 attr_reader :a
 attr_writer :a

def initialize
   @a = 0
 end

 def b
   a = 1
 end
end

ins = A.new
ins.b
p ins.a
# 0

Возможно более наглядный юз кейс.
Просто представь что у тебя переменная которую ты хочешь как то засетить внутри instance метода, а потом использовать извне или в другом методе.
Получается нужно юзать либо self, либо @, что странно как по мне.
Я думал что где то ошибся, но походу руби так и работают.
-1 для атрибут врайтеры, в холиваре что лучше юзать в класе инстанс переменые или aтрибут врайтеры😅
сори там была опечатка, исправил  attr_writer :b на  attr_writer :a, но сути не меняет
источник

IP

Igor Pavlov in Ruby, Rails, Hanami | dry-rb
Viacheslav Miroshnichenko
class A
 attr_reader :a
 attr_writer :a

def initialize
   @a = 0
 end

 def b
   a = 1
 end
end

ins = A.new
ins.b
p ins.a
# 0

Возможно более наглядный юз кейс.
Просто представь что у тебя переменная которую ты хочешь как то засетить внутри instance метода, а потом использовать извне или в другом методе.
Получается нужно юзать либо self, либо @, что странно как по мне.
Я думал что где то ошибся, но походу руби так и работают.
-1 для атрибут врайтеры, в холиваре что лучше юзать в класе инстанс переменые или aтрибут врайтеры😅
def b
 self.a = 1
end
источник

A

Anton in Ruby, Rails, Hanami | dry-rb
Alex Iv
Пожет доку почитать? Автор об этом может и не сказать, но все опенсорс проекты имеют репо на Гитбаб где разжовано, как их использовать. Вот два твоих новых друга - https://github.com/twbs/bootstrap-rubygem и https://rubygems.org/
замечание дельное, сразу помогло, но вернуло к прошлой ошибки(
источник