Size: a a a

2020 April 13

SP

Stanislav Popov in rust_offtopic
тут конкретно это сишка https://apidock.com/ruby/Module/attr_accessor
видимо потому что руби чуть больше думали о скорости чем в питоне
источник

SP

Stanislav Popov in rust_offtopic
но все кастомные такие штуки делали просто лютую дичь
источник

EG

Emmanuel Goldstein in rust_offtopic
Они настолько в компайлтайме, насколько это возможно
источник

SP

Stanislav Popov in rust_offtopic
можно открывать рельсы и молча окуевать
источник

PK

Pavel Kvasnikov in rust_offtopic
Вот странно что никто не предъявил за 3 вида eval()
источник

PK

Pavel Kvasnikov in rust_offtopic
Вот это уже очень интересно
источник

SP

Stanislav Popov in rust_offtopic
наверное потому что эвал это зашквар сам по себе
источник

PK

Pavel Kvasnikov in rust_offtopic
Stanislav Popov
можно открывать рельсы и молча окуевать
Рельса это эталонный анти-паттерн
источник

SP

Stanislav Popov in rust_offtopic
а блоки абьюзаны на каждом чихе
источник

PK

Pavel Kvasnikov in rust_offtopic
Stanislav Popov
наверное потому что эвал это зашквар сам по себе
Нет, эти штуки офигенные когда пишешь тесты, поэтому RSpec так всем нравится - намокал себе что угодно и тестишь поведение, а не private методы и не надо тащить никакие DI
источник

SP

Stanislav Popov in rust_offtopic
о да помню этот кайф
if block_given?
источник

SP

Stanislav Popov in rust_offtopic
короче вспомнил. вот эти вот штуки которые патчат класс наподобии attr_accessor - они как раз там подменяют метод, сохраняют старый, берут новый
источник

SP

Stanislav Popov in rust_offtopic
причем никто не говорит что это вообще и есть более менее способ делать декоратор
источник

SP

Stanislav Popov in rust_offtopic
я помню в самих рельсах тоже такой ад. например отсутствие форм или любой валидации. они все херачили в моделях и советовали так в доках
источник

PK

Pavel Kvasnikov in rust_offtopic
Ruby, like Smalltalk, does not allow instance variables to be accessed outside of methods1 for that object. That is, instance variables cannot be accessed in the x.y form as is common in say, Java or even Python. In Ruby y is always taken as a message to send (or "method to call"). Thus the attr_* methods create wrappers which proxy the instance @variable access through dynamically created methods.
источник

R

Re-L in rust_offtopic
источник

SP

Stanislav Popov in rust_offtopic
ну и щас это все не имеет смысла. без иде все эти фичи это просто мусор. язык который только рантаймово определяет будет в метод пропихнут блок или нет - это на помойку сразу
источник

A

Anton 📦 ᯌ in rust_offtopic
+
источник

SP

Stanislav Popov in rust_offtopic
Pavel Kvasnikov
Ruby, like Smalltalk, does not allow instance variables to be accessed outside of methods1 for that object. That is, instance variables cannot be accessed in the x.y form as is common in say, Java or even Python. In Ruby y is always taken as a message to send (or "method to call"). Thus the attr_* methods create wrappers which proxy the instance @variable access through dynamically created methods.
да я понимаю. я взял attr_accessor чисто как пример метапрограммирования. я не помню как эти штуки в целом назывались
источник

SP

Stanislav Popov in rust_offtopic
Stanislav Popov
ну и щас это все не имеет смысла. без иде все эти фичи это просто мусор. язык который только рантаймово определяет будет в метод пропихнут блок или нет - это на помойку сразу
а да, блок можно было пропихнуть в любой метод! блок был неявным аргументом, это тоже особый кайф
источник