
Roman
26.09.2018
12:23:10

Tim
26.09.2018
12:23:22
он убрал императивное дёрганье команд из верхней логики
обернул в ооп парадигму так сказатб

Dima
26.09.2018
12:24:31

Google

Dima
26.09.2018
12:26:01

Tim
26.09.2018
12:28:43
ты прав, пользы в плане реализации текущей задачи он не несёт. Тут скорее я думаю семантический смысл (или оопшный). Условно говоря, если есть класс Status, то класс Statuses как бы управляет объектами класса Status, а если нет, то объектами класса Array

Dima
26.09.2018
12:29:30

Tim
26.09.2018
12:29:39
@statuses[status_name]&.form_key?(form_key)

Dima
26.09.2018
12:30:27
Хотя это тоже уже переусложнение.

Tim
26.09.2018
12:30:30
и тут разница в точке зрения. для меня статус это статус, а не массивчик
class Statuses
EMPTY_STATUS = Status.new([]).freeze
def initialize(hash)
@statuses = hash.map { |k, v| [k, Status.new(v)] }.to_h
end
def status(name)
@statuses[name] || EMPTY_STATUS
end
end
to_delete = Statuses.new(STATUS_AND_FORM_KEY_TO_DELETE)
to_delete.status('asd').form_key?('asdasd')
хоба
избавились от паразитирующего nil

v
26.09.2018
12:49:58
@davydovanton а чо у тебя на сайте маркдаун не пашет?

Anton
26.09.2018
12:50:35
а это не маркдаун

v
26.09.2018
12:50:53
это не баг, а фича?

Google

Anton
26.09.2018
12:51:08
ага

Vasiliy
26.09.2018
12:58:36

Tim
26.09.2018
12:59:36
типа если наследуешься от String, Array, Hash и ещё чего-то

Vasiliy
26.09.2018
13:00:12
там наверное была статья что нехуй стандартные классы переопределять

Tim
26.09.2018
13:00:15
то руби интерпретатор во время оптимизации может пошатать что-то в неожиданном месте
не

Vasiliy
26.09.2018
13:00:49
чото гон какой-то

Tim
26.09.2018
13:02:08
https://words.steveklabnik.com/beware-subclassing-ruby-core-classes
core classes а не standard, ошибся

Максим
26.09.2018
13:03:12

Nikita
26.09.2018
13:03:28
Мужики, у кого Windows 10 и Edge Browser стоит - пинганите, пожалуйста в ЛС. Займу 4 минуты вашего времени

Максим
26.09.2018
13:04:20
типа если
Entity.first_brother.status == :status && Entity.second_brother.state == :form_key
то возвращаем тру

Nikita
26.09.2018
13:04:23
Пинганули, пасиба

Tim
26.09.2018
13:04:51
сложна

Максим
26.09.2018
13:05:33
ну короче в константе ключи и связные массивы
в массивах формы которые при сочетании с данным статусом (который ключ) должны в итоге вернуть тру

Vasiliy
26.09.2018
13:07:52
https://words.steveklabnik.com/beware-subclassing-ruby-core-classes
What do you think this code should do?
class List < Array
end
puts List.new.to_a.class
If you said “it prints Array,” you’d be right. This behavior really confuses me, though, because List is already an Array; in my mind, this operation shouldn’t suddenly change the class.
блять он чё долбаёб

Roman
26.09.2018
13:08:44
ну пусть сделает
def to_a
self
end

Google

Tim
26.09.2018
13:09:22

Vasiliy
26.09.2018
13:10:01
что спорного в том что ты приводишь свой класс к типа Array и возмущаешься что у тебя Array ведь свой класс ты наследовал от Array

Roman
26.09.2018
13:10:55
то что ты отнаследовался от Array не делает твой класс Array

Максим
26.09.2018
13:12:19
но ты приводишь к массиву
методом который описан где то там
и возвращает экхемпляр Array
а не твоего класса
если написать List.new.class
то вернёт List

Vasiliy
26.09.2018
13:13:03
так погоди, а почему он должен после to_a возвращать твой класс?

Максим
26.09.2018
13:13:12
во во
не должен

Vasiliy
26.09.2018
13:14:19
на мой взгляд дрочево и доебство до ООП

Максим
26.09.2018
13:14:22
можно наследовать от CustomArray например и там .to_a переписать под себя
мол если сам являешься унаследованым от Array
то возвращаем себя

Roman
26.09.2018
13:14:36
я ж грю, def to_a; self; end

Максим
26.09.2018
13:14:50
если нет то обычное повдение to_a

Roman
26.09.2018
13:15:07
хотя вообще интересная вещь

Tim
26.09.2018
13:15:15
l = List.new
l << 1
l << 2
puts l.reverse.class # => Array

Google

Roman
26.09.2018
13:15:16
допустим у тебя
class List < Array
end

Максим
26.09.2018
13:15:43
можно сделать что то типа
взять все методы и передефайнить их так что возвращал бы list в итоге а не array
ну вы поняли

Roman
26.09.2018
13:16:47
но по ООП это неправльно выходит

Максим
26.09.2018
13:16:57
да
как быть?

Roman
26.09.2018
13:17:16
я думаю, что это потому что Array заимплеменчен в С

Максим
26.09.2018
13:17:16
какое вообще должно быть в итоге правильное решение?

Tim
26.09.2018
13:17:19
не наследоваться от аррея

Roman
26.09.2018
13:17:24
и там просто захардкоджен класс

Tim
26.09.2018
13:17:29
инклюдить енумерабл если надо

Максим
26.09.2018
13:17:36
ну да можно имплементить энумерабл
но тоже звучит не очень ООП
по моему

Tim
26.09.2018
13:17:47
с чего б нет

Roman
26.09.2018
13:17:58
нормально звучит

Максим
26.09.2018
13:18:01
хуй знает объяснить не могу

Google

Tim
26.09.2018
13:18:04
инклюдишь енумерабл и определяешь ич

Roman
26.09.2018
13:18:05
это интерфейс
чистейший

Tim
26.09.2018
13:18:07
да

Максим
26.09.2018
13:18:09
просто как то вот мне кажется будто не правильно

Roman
26.09.2018
13:18:19
в руби интерфейсы выполнены в виде инклюдов

Tim
26.09.2018
13:18:28
class MyString < String
def to_s
"lol"
end
end
s = MyString.new
s.concat "Hey"
puts s
puts s.to_s
puts "#{s}"

Максим
26.09.2018
13:18:36
да я не спорю что в руби нет интерфейсов

Tim
26.09.2018
13:18:38
Hey
lol
Hey

Roman
26.09.2018
13:19:00

Максим
26.09.2018
13:19:05
я знаю
ну гв голове логика почему не верно звучит применно так
типа пастулат наследования он всё таки главнее как то
а тут получается отходим от него
и поэтому вот
не спорю я могу быть не прав

Vasiliy
26.09.2018
13:19:57

Максим
26.09.2018
13:20:00
но вот в голове мысль всё равно такая сидит

Vasiliy
26.09.2018
13:20:54
вообще да, много где пишут что лучше использовать композицию, но в контексте статьи автор примеры спецом нахуярил

Максим
26.09.2018
13:20:54
и после этого если класс полученого после пересобирания объекта это книжная полка а не там например рюкзак с вещами то логика соответствующая
а тут получается при проверке класса после пересобирания вообще не то и не то