@codenamecrud

Страница 319 из 1009
Artem
29.09.2016
16:54:41
эм, то есть у тебя может ключ содержать значение nil?

2.3.1 :002 > hash = { 'country' => {} } => {"country"=>{}} 2.3.1 :003 > hash['country'].fetch('city', {})['street'] => nil

Serhii
29.09.2016
16:56:36
а, стоп! все понятно - я прочитал твой фетч как с блоком. тогда это получается тоже самое что и через мой дефолт

Artem
29.09.2016
16:58:06
если придираться, то не совсем :) дефолтное значение возвращается при любом недостающем ключе, а fetch делает ассерт только там где ему укажешь

Google
Serhii
29.09.2016
17:00:11
ну то пример такой... ключа может не быть в любом месте

Artem
29.09.2016
17:00:47
¯\_(ツ)_/¯

Serhii
29.09.2016
17:01:02
а я не пойму dig только в 2.3.0 p1 есть? ибо в p0 не откликается :-/

Artem
29.09.2016
17:01:36
можно тогда создать через Hash.new({})

что за р1/р0?

Serhii
29.09.2016
17:02:49
ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290)

preview0

Artem
29.09.2016
17:03:17
смотри ченжлоги :) у меня 2.3.1

обновить не варик?

Serhii
29.09.2016
17:03:59
уже обновил, прост странно что в p0 нет, а в p1 есть

Aleserche
29.09.2016
17:08:22
одна из болей рубей

минорные версии порой отличаются так, будто это мажорные версии

но это нормально, к этому очень быстро привыкаешь

Google
Artem
29.09.2016
17:10:27
хз, вроде дата та же что и у тебя https://www.ruby-lang.org/en/news/2015/12/25/ruby-2-3-0-released/

Serhii
29.09.2016
17:12:02
всетаки по поводу 2.3.0р0 то я соврал.. метод есть, ошибку не дочитал до конца был позвал dig(:a, :b, :c), но в ;a прописан fixnum и вышло что он зовет fixnum.dig(:b, :c)

надо короче свой диг делать )))

Artem
29.09.2016
17:15:51
то что у тебя такая ситуация возникает скорее говорит о неудачном дизайне программы

Serhii
29.09.2016
17:16:38
ну это не мой дизайн, хеш АПИ возвращает

Artem
29.09.2016
17:18:24
и там может быть либо число, либо хэш?

значит дизайн api не очень хороший :)

Serhii
29.09.2016
17:21:02
не, числа нет, ветка хеша может быть, а может и не быть

про число то я так уже придираюсь ))

еще одну штуку захотелось - как переписать метод #[] у хеша или массива?

Artem
29.09.2016
17:24:05
не надо этого делать

http://mokevnin.github.io/blog/2013/11/14/pnu/

Serhii
29.09.2016
17:27:06
это так чисто из любопытства, не для продакшена. просто интересно можно ли его переписать или нет

Artem
29.09.2016
17:27:52
в руби возможно все

class Hash def [](key) puts 'surprise motherfucker' end end

хах, забавно

попробовал это в pry сделать, сразу эксепшены поперли)

Serhii
29.09.2016
17:30:59
да так я пробовал, у меня вообще irb валится ))

Artem
29.09.2016
17:31:22
слишком много на этот метод полагается :)

Google
Ivan
29.09.2016
17:31:33
попробуй

Artem
29.09.2016
17:31:34
нет

Ivan
29.09.2016
17:31:37
дописаит

Artem
29.09.2016
17:31:43
не сработает

Ivan
29.09.2016
17:31:46
ть*

Serhii
29.09.2016
17:31:52
и то что ты написал будет hash.[] 'key'

Ivan
29.09.2016
17:32:00
а, да, этож не наследование

Artem
29.09.2016
17:32:32
Serhii эм, вообще-то hash[key] это сахар над тем что ты написал

Serhii
29.09.2016
17:32:34
hash[] - кажется мне руби средствами не сделать

Artem
29.09.2016
17:32:49
1 + 1 это сахар над 1.+(1)

можешь попробовать сам

в руби все объект и все работает через передачу сообщений

Artem
29.09.2016
17:34:04
1.send(:+, 1)

Serhii
29.09.2016
17:36:19
ну про циферки я в курсе, [] като по другому пересылается

Artem
29.09.2016
17:36:52
нет

{ a: 1 }.send(:[], :a)

я кстати нашел способ как переопределить []

class Hash alias_method :original_get_value, :[] def [](key) puts 'surprise motherfucker' original_get_value(key) end end

Serhii
29.09.2016
17:38:52
таким образом вызывается hash.[](:a) - с такой обработкой все понтяно. интересно именно hash[]

Artem
29.09.2016
17:39:18
ну дак этим уже интерпретатор занимается

Google
Artem
29.09.2016
17:40:00
суть в том что это просто сахар, внутри там обычная отправка сообщения идет

Serhii
29.09.2016
17:40:29
тоесть если я хочу например сделать свой объект где для доступа к ключу используется T:keyT, а не [:key]. например myobjectT:aT

как же это извращенчески выглядит :-DD

Artem
29.09.2016
17:40:58
пиши свой external dsl

cucumber например так и сделан

Serhii
29.09.2016
17:41:21
))

Artem
29.09.2016
17:41:25
всякие slim/haml тоже

Admin
ERROR: S client not available

Artem
29.09.2016
17:43:13
насчет последних возможно погорячился.. там просто парсеры, наверно

Serhii
29.09.2016
17:43:55
class Hash alias_method :original_get_value, :[] def [](key) puts 'surprise motherfucker' original_get_value(key) end end
веселая потом получается работа в irb после этого )))

Artem
29.09.2016
17:44:25
вот поэтому не надо манки-патчингом заниматься :)

такие ошибки дебажатся днями, если не неделями

Serhii
29.09.2016
17:47:52
если свой класс на базе хеша то почему бы и нет

...если очень сильно надо :)

Artem
29.09.2016
17:48:10
ну свой класс это отдельная тема

тут ты волен делать что хочешь

главное в кор классы не лезть

Serhii
29.09.2016
17:50:43
да, хотя иногда очень хочется. вот недавно очень не хватало String.to_a, что бы не писать через сплит

Artem
29.09.2016
17:55:56
попробуй другие языки, где нет возможности расширять кор классы :) потом даже мыслей таких не будет

Google
Artem
29.09.2016
17:58:16
фрей напомнил про такую штуку http://timelessrepo.com/refinements-in-ruby

Serhii
29.09.2016
17:58:59
это она вроде и есть

а какой метод отвечает за ответ на просто имя инстанса? 2.3.1 :028 > test = Test.new => #<Test:0x0000000160a008 @value="Some text"> 2.3.1 :029 > test => #<Test:0x0000000160a008 @value="Some text">а хочется что бы на test вывалило значение @value

Artem
29.09.2016
18:36:57
угу, в irb прокатывает, pry все равно дополнительную инфу выводит

Eugene
29.09.2016
19:48:56
Народ, кто-нибудь из Новосибирска или окрестностей есть?

Serhii
29.09.2016
20:19:17
Что там так манит?

Ivan
29.09.2016
20:19:29
Народ, кто-нибудь из Новосибирска или окрестностей есть?
Напомнил про новосиб, аж грустно стало. Оттуда был друг у меня, очень веселый парень) но увы, дружбу я просрал. А город хороший)

Что там так манит?
Митап какой то

Sergey
29.09.2016
20:24:05
Мне новосиб не понравился в свое время

Слишком серым показался

Eugene
29.09.2016
20:27:41
серый и есть

в конце сентября там конфа будет, поеду

думал мож кто еще подтянется

Nikita
29.09.2016
20:34:13
У меня в новосибе у знакомого контора. Туда нужны были рубисты))

Sergey
29.09.2016
20:36:10
Я думаю Евгений свободный художник ;)

Ivan
29.09.2016
21:44:10
Как то у нас тема про крипи истории заходила

https://slack-files.com/T2BCFAZHU-F2HQF3623-5aadb44df1

Страница 319 из 1009