
Mike
26.09.2018
13:21:57
а я снова тут и напоминаю обывателям что если есть сеньорчик готовый на релокейт в Севастополь - обсудим. Деньги: 180-250k на руки

Максим
26.09.2018
13:22:08
если книжная полка то поставить в квартиру
если рюкзак то надеть на ребёнка

Google

Vasiliy
26.09.2018
13:22:21
ну потому что руби не про это же

Максим
26.09.2018
13:22:28
ну задача то может быть и про это

Tim
26.09.2018
13:22:40
при чем тут про что руби

Vasiliy
26.09.2018
13:23:01
часто у тебя задача возвращать элемент определённого типа?

Tim
26.09.2018
13:23:14
ты методы теряешь
и всё остальное тоже

Vasiliy
26.09.2018
13:23:56
ну так проверяй методы, как в любой книжке по рубям сказано с утиной типизацией
нахуя тащить в язык с динамической типизацией вот это всё из явы или приходить и писать статью мол глядите ка как тут

Tim
26.09.2018
13:24:39
и че, я буду делать
l = List.new(...)
l.reverse.try(:do_something)?
на случай если метод изменит класс

Vasiliy
26.09.2018
13:25:26
ты приведи реальный пример, а не вот ту хуйню что он накалякал

Tim
26.09.2018
13:26:12
динамическая типизация это означает что тебе не надо писать
Kukarek<kokoko> kukarek = new Kukarek<kokoko>()
И что kukarek может быть объектом другого класса и т.д.

Google

Tim
26.09.2018
13:26:29
а не то, что бабочки порхают и пони радугой срут и не надо тащить все вот это джавовское
реальный пример - я привёл. в List есть метод do_something
Ты переворачиваешь список, потом пытаешься юзануть метод do_something, но не тут то было, потому что это уже массив а не List
и этого метода нет
это раз
приколы с to_s и стрингой это два
наследоваться от Array, String, Hash и т.д. только имеет смысл если нужно взять их контракт

Vasiliy
26.09.2018
13:28:21
и это всё хуйня придуманая стивом клабником

Tim
26.09.2018
13:28:24
в абсолютном большинстве случаев это не надо
то есть не надо Name < String
а надо class Name и определить #to_s

Максим
26.09.2018
13:29:20
простите что такое контракт?

Tim
26.09.2018
13:29:27
по-моему это слабый контраргумент

Vasiliy
26.09.2018
13:29:30
ну потому что примеры его, которые он там нафантазировал себе

Tim
26.09.2018
13:29:41

Максим
26.09.2018
13:29:44
а
спасиб

Vasiliy
26.09.2018
13:29:59
под любую хуйню можно придумать пример который будет показывать что вот оно какое гавно

Tim
26.09.2018
13:30:04
ну вот я тебе реальные примеры привёл где мотыгой по яйцам может это ударить

Google

Vasiliy
26.09.2018
13:30:11
хотя на деле так никто нихуя не делает

Tim
26.09.2018
13:30:59
l.reverse.do_something не сделают?
s.concat 'asd' не сделают?
и главное, нехуй тащить контракт тех классов в свой
если это не SuperArray какой-нибудь

Vasiliy
26.09.2018
13:32:36
l.reverse.do_something не сделают?
ну тут ты можешь проверить доступность метода, и в том же наследовании переопределить метод reverse(что собственно типок из статьи и делает в предложении решения)

Tim
26.09.2018
13:34:00
то, что сменится класс вообще не очевидно
если проверять после каждого метода "а отвечает ли результат на такойто метод", то это чокнуться можно. и код засрётся моментально

Vasiliy
26.09.2018
13:34:34

Tim
26.09.2018
13:35:18
ну а если ты переопределяешь reverse, то что тебе мешает не наследоваться тупо от Array, а определить метод reverse (и делегировать его внутреннему аррею), который будет изначально твой класс возвращать?
я и не говорил что это правильно
что то хуйня что это, но проверка на респонс это ещё большая параша чем nil

Vasiliy
26.09.2018
13:36:37

Tim
26.09.2018
13:37:25
ну у тебя будет массив инкапсулировать. эти ахуилиард методов на него и делегируй и возвращай что он возвращает
ну не совсем так, там хитрость небольшая есть, но всё же
и если тебе извне нужно дёргать ахуилиард методов (в тем более от массива), то скорее всего у тебя класс слишком тупой
ну или жирный
ладно, хз, я погорячился немного

Vasiliy
26.09.2018
13:41:42
ну или например делать как-то так универсально
gem_dir = methods.first.is_a?(String) ? "gem_dir" : :gem_dir
я в принципе понимаю от чего у чела бомбит, но блин, надо учитывать как в языке принято

Dima
26.09.2018
18:32:12

Google

Dima
26.09.2018
18:32:26
https://app.codesignal.com/interview-practice/task/dYCH8sdnxGf5aGkez/description

Roman
26.09.2018
19:35:17
тут надо не регулярки, а конечные автоматы
верней я не удивлюсь, если это можно решить регуляркой, но не эффективно будет и сложно

v
26.09.2018
19:35:53

Dima
26.09.2018
19:36:25

Roman
26.09.2018
19:36:50

Dima
26.09.2018
19:37:13
динамическое программирвоание. Парсим строку. там где кватратные скобочки, переход на новый рекурсвный вызов.
Обход дерева в глубину DFS

Roman
26.09.2018
19:37:42
движок регулярных выражений тоже построен на конечных автоматах, но это не одно и то же

v
26.09.2018
19:38:19

Roman
26.09.2018
19:38:43
скорей всего да
ты же подстроку передаешь, а не всю
по одному участку строки проходит только одна вложенность
там же они могут быть вложенными одни в другие

Dima
26.09.2018
19:41:30

Roman
26.09.2018
19:45:07
ну это практически уже автоматы
проще полностью на них и избавиться от рекурсии

Dima
26.09.2018
19:46:12

Google

Roman
26.09.2018
19:47:52
в смысле как? идешь от первого символа к последнему, когда встречаешь управляющий символ - идешь дальше и запоминаешь в еще одну строку. когда встречаешь закрывающий управляющий символ - множишь запомненное и добавляешь к output

Dima
26.09.2018
19:48:04

Roman
26.09.2018
19:48:56
я такой код часто вижу в парсерах
читать их невозможно
я такой код только писать могу :)

v
26.09.2018
19:59:31
есть анекдот. Заканчивается следующим образом "Шерлок курить так и не бросил. А вот Ватсон без трубки уже не мог"

Alex
26.09.2018
20:08:09
ммм арчик.

Dima
27.09.2018
04:38:26
Почему Arch? На сколько мне известно это на столько облегченный дистрибутив где всё нужно настраивать саомстоятельно в отличии от Ubuntu или Mint с Mangaro. По мимо основной работы придется еще углубленно разбераться в устройстве операционной системы.

Alexander
27.09.2018
04:39:32
Да и гента простая ?

ShadoWalkeR
27.09.2018
04:40:31
Они все простые. Пока чтото не сломается ?

Dima
27.09.2018
04:43:17

Alexander
27.09.2018
04:43:56
Пока она не померла физически

Dima
27.09.2018
04:46:24