@proRuby

Страница 1481 из 1594
Roman
26.09.2018
12:23:10
аперсант зачем?
nil-safe синтаксис

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

обернул в ооп парадигму так сказатб

Google
Dima
26.09.2018
12:26:01


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

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

по моему это лишнее. В крайнем случае можно написать class Status <::Array end
наследоваться от стандартных классов точно не надо, у этого есть подводные камни

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
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

l = List.new l << 1 l << 2 puts l.reverse.class # => Array
аа вот это кстати да, реальный кейс

Максим
26.09.2018
13:15:43
l = List.new l << 1 l << 2 puts l.reverse.class # => Array
так reverse же тоже возвращает Array

можно сделать что то типа взять все методы и передефайнить их так что возвращал бы 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
l = List.new l << 1 l << 2 puts l.reverse.class # => Array
а почему реверс должен возвращать твой класс?

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

а почему реверс должен возвращать твой класс?
ну в работе вполне может быть что например у тебя книжная полка и надо пересобрать книги

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

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

а тут получается при проверке класса после пересобирания вообще не то и не то

Страница 1481 из 1594