
yopp
02.06.2016
09:16:32
(на этом факте, кстати, можно делать реально приватные методы ;)
даже не методы, нет, «приватные хранилища»
https://repl.it/CXfn
правда минус тут в том, что оно работает как переменная класса :)

Google

yopp
02.06.2016
09:21:46
но можно в initialize в синглтоне тоже самое делать

Aldar
02.06.2016
09:24:06
если я отнаследуюсь от Foo, там уже не будет real_private_value

yopp
02.06.2016
09:24:29
https://repl.it/CXfn/1

Aldar
02.06.2016
09:24:30
и следовательно метод foo не сработает

yopp
02.06.2016
09:24:36
ты не понимаешь как контексты работают видать
всё будет работать :)
когда ты мы открыли Foo у нас появился контекст
дальше мы в контексте определили локальную переменную

Aldar
02.06.2016
09:25:10
self будет сам класс Foo

yopp
02.06.2016
09:25:44
дальше когда мы передавали в define_method блок, мы создали новый контекст, у которого родителем является контекст class Foo
после end контекст был безвовзратно утерян, но при этом методы :foo и :foo= на него ссылаются

Aldar
02.06.2016
09:26:31
понятно

yopp
02.06.2016
09:26:34
так что он продолжает существовать

Google

yopp
02.06.2016
09:26:48
и при наследовании у тебя реализация методов foo и foo= остаётся в Foo
а значит ты обращаешься к тому-же замыканию
но это отличный такой способ насрать себе в память :)
причём так, что gc никогда это не соберёт
по этому define_method лучше всегда вызывать внутри изолированного метода, чтоб быть 100% увереным что в контекст никаких жырных объектов не попало

Антон
02.06.2016
09:28:32
ничоси

yopp
02.06.2016
09:35:08
а разрешаются в руби методы, cvar/ivar и константы
жалко по ruby aasn silver хендбуков по подготовке нет
там есть несколько каверзных вопросов про контексты

Aldar
02.06.2016
09:40:24
любой класс, модуль, метод создаёт контекст
есть ещё глобальный контекст
блок, лямбда, прок контекст не создает вроде

yopp
02.06.2016
09:41:39
эм
нет, совсем неправильно
контекст есть вообще всегда
с контекстами есть четыре вещи: создание, продолжение, наследование, прерывание
читый новый контекст создаётся всего 3 способами: class / module / def
ну и при запуске интерпретатора есть контекст main
при использовании do .. end или {} (как аргумента) контекст наследуется

Google

yopp
02.06.2016
09:43:43
тоесть появляется новый контекст, который ещё и указывает на старый
разница тут простая: дочерний контекст не может менять родительский.
(под менять контекст тут подразумевается таблица локальных переменных, но не их значения)
контекст жестко прерывается только тремя способами: закрывающий end после class / module и def

Aldar
02.06.2016
09:45:22
ну я примерно это написал, тольк не сказал про наследование контекста

yopp
02.06.2016
09:45:34
блок, лямбда, прок контекст не создает вроде
создаёт :)

Aldar
02.06.2016
09:45:37
в джаваскрипте новый контекст создаёт только function

yopp
02.06.2016
09:45:47
просто это дочерний контекст

Aldar
02.06.2016
09:46:10
то есть я неправ был только про proc, lambda и блок контекст

yopp
02.06.2016
09:46:33
да. контекст (он-же биндинг) это то, где живут локальные переменные

Aldar
02.06.2016
09:46:40
да, в проке и лямбде можно создавать свои локальные переменные

yopp
02.06.2016
09:46:52
так что везде и всегда есть контекст
в этом плане руби дубовый
в хорошем смысле
что объектная модель простая как палка, что история с областями видимости простая
за исключением разрешения констант, наверное

Aleserche
02.06.2016
17:31:56
тут только один мужик

Rafkat
02.06.2016
17:33:38
по моему щас кого то забанят

focusshifter
02.06.2016
17:33:53
зачем ты это делаешь?

Google

focusshifter
02.06.2016
17:34:36
не вижу в топике "канал для репоста смехуечков"
не вижу чего-то, связанного с профдеятельностью большинства в этом чате на картинке
так зачем?
а, нвм, ясно-понятно
@Eugene_Shved убивай за спам гражданина выше, спасибо-пожалуйста. http://i.imgur.com/bDzsfwU.png

yopp
02.06.2016
17:44:54
в смысле «ТОКА ПО ДЕЛУ»
или это спамбот прям?

Admin
ERROR: S client not available

focusshifter
02.06.2016
17:45:33
само собой, но вот этого говна выше тоже не нужно
нет

yopp
02.06.2016
17:45:47
ЭС ЭМ ЭМ ЩИТ?

focusshifter
02.06.2016
17:45:59
но он третий раз уже говно своё сюда тянет, хотя его уже попросили этого не делать
щяб канал раскрутить!

yopp
02.06.2016
17:46:37
а
да, таких давайте порицать общественно
и тех которые ботов тащат

Aldar
02.06.2016
17:57:40
кик его)

Eugene
02.06.2016
18:14:59
ну он 4 раз
сюда вбрасывает вроде бы

Google

yopp
02.06.2016
18:15:17
ну три раза считай мы его простили
на четвёртый давай публичную казнь
аутодафе

Eugene
02.06.2016
18:16:04
пацану бы в smm

Stanislav
02.06.2016
18:17:53
да его банить надо
в другие каналы кросспостит тоже самое

yopp
02.06.2016
18:27:40
всё, тройка есть
расстрелять!

Aldar
02.06.2016
18:29:13
господа, меня на первую рельсовую работу взяли

Stanislav
02.06.2016
18:29:33

Aldar
02.06.2016
18:29:52
ну я до этого не работал рельсовиком

Stanislav
02.06.2016
18:30:00
поздравляем чо)

Aldar
02.06.2016
18:30:11
?

Stanislav
02.06.2016
18:30:25
я поддерживал в 2011 сайт на рельсе 1.2 эта была боооль

Aldar
02.06.2016
18:30:38
там рельса 3

Rafkat
02.06.2016
18:30:53

Stanislav
02.06.2016
18:30:54
ну, апнишься до 4 или 5 )

Aldar
02.06.2016
18:31:09
я, походу джун
в рельсе

Mikhail
02.06.2016
18:32:18
но МОЕ УВАЖЕНИЕ