Size: a a a

2021 March 25

a

allter in Modern::Perl
basiliscos
Напомните, что такое трейты? Это ж вроде просто интерфейс? А о каких (строго типизированных) интерфейсах в перле идёт речь? requires(method) в ролях? Ну это ... ну это не совсем то.
По сути, трейты/роли - это частично (или полностью) определённый интерфейс. Благодаря возможности определения методов в трейтах, появляется возможность декомпозировать логику адекватным способом, что позволяет избежать проблемы Fragile Base Class.

Помимо того, что это похоже на множественное наследование в Perl, для трейтов ещё обычно более удобный поиск реализации методов делается (не DFS, как в Perl), что избавляет от Diamond problem.
источник

VG

Vadim Goncharov in Modern::Perl
в перле по-разному можно
источник
2021 March 26

AP

Anton Petrusevich in Modern::Perl
Sergey Zhmylove
Трейт гарантирует наличие методов, но не должен их реализовывать
это абстрактный класс
источник

SZ

Sergey Zhmylove in Modern::Perl
Anton Petrusevich
это абстрактный класс
Нет, абстрактный класс может существовать в языках без множественного наследования
источник

AP

Anton Petrusevich in Modern::Perl
трейт это именно отметка в иса, а есть там методы или нет — не так важно
источник

AP

Anton Petrusevich in Modern::Perl
если в трейте есть методы, то это уже интерфейс
источник

AP

Anton Petrusevich in Modern::Perl
или абстрактный класс
источник

AP

Anton Petrusevich in Modern::Perl
но в трейте может и не быть методов вообще
источник

AP

Anton Petrusevich in Modern::Perl
роль отличается от трейта тем, что методы там есть гарантированно, а отметки в иса нет
источник

AP

Anton Petrusevich in Modern::Perl
Sergey Zhmylove
Нет, абстрактный класс может существовать в языках без множественного наследования
это будет интерфейс
источник

SZ

Sergey Zhmylove in Modern::Perl
Короче в этом чате у всех разные мнения
источник

МИ

Михаил Иванов... in Modern::Perl
Переслано от Михаил Иванов...
В общем-то, это терминологический спор
источник

МИ

Михаил Иванов... in Modern::Perl
Переслано от Михаил Иванов...
Каким определением пользуетесь? (c)
источник

a

allter in Modern::Perl
Sergey Zhmylove
Короче в этом чате у всех разные мнения
Да и спросили абстрактно, а в каждом ЯП трейты/роли имеют нюансы, да и сопутствующие системы типов отличаются.
источник

AP

Anton Petrusevich in Modern::Perl
интерфейс — гарантирует наличие методов, но не имеет (не имел, вроде что-то появилось в жабе) имплементации, обязательны все методы к имплементации. абстрактный класс почти как интерфейс, но может не иметь имплементации некоторых методов, а некоторых может иметь. трейт вообще не про методы, а про поведение, которое может иметь методы, а может и не иметь и быть просто отметкой, что определённый класс имеет определённую "черту поведения"
источник

a

allter in Modern::Perl
Anton Petrusevich
интерфейс — гарантирует наличие методов, но не имеет (не имел, вроде что-то появилось в жабе) имплементации, обязательны все методы к имплементации. абстрактный класс почти как интерфейс, но может не иметь имплементации некоторых методов, а некоторых может иметь. трейт вообще не про методы, а про поведение, которое может иметь методы, а может и не иметь и быть просто отметкой, что определённый класс имеет определённую "черту поведения"
Но реализовывается - то это через реализацию/объявление методов и наследование оных...
источник

AP

Anton Petrusevich in Modern::Perl
ну так и да, а что?
источник

AP

Anton Petrusevich in Modern::Perl
вон, в компьютере вся информация это 1 и 0, но мы и компьютер её умеем интерпретировать
источник

a

allter in Modern::Perl
"Поведение" тут вообще не при чём. Только методы, их сигнатуры и композиция.
источник

AP

Anton Petrusevich in Modern::Perl
ну вот, к примеру, набор байт. он может быть бинарным, а может быть аскии или ютф8
источник