История изменений
Исправление MOPKOBKA, (текущая версия) :
Трейты не являются типами.
А модули не являются типами в OCaml. Такое разделение не должно удивлять.
dyn Trait ... это отдельная сущность в языке для динамической диспетчеризации.
Как и в Ocaml есть отдельная возможность использовать первоклассные модули, которые и есть модули просто предоставляется возможность реализовывать ДД.
Ты не можешь создать объект определенного трейта, получить ссылку на трейт, не можешь указатель скастовать к указателю на трейт.
Тоже самое с интерфейсами.
Там нет никаких структур из указателей, никаких ни абстрактных, ни обычных классов.
Я про структуры из указателей не говорил, Trait без dyn это тоже самое что и dyn Trait с девиртуализацией.
dyn = рантайм, dyn = компилтайм.
Различия c Java есть, но говорить что trait это не интерфейс?
Даже примеры переведенные почти напрямую с Java работать будут: https://godbolt.org/z/4K49s6K7e
Исправление MOPKOBKA, :
Трейты не являются типами.
А модули не являются типами в OCaml.
dyn Trait ... это отдельная сущность в языке для динамической диспетчеризации.
Как и в Ocaml есть отдельная возможность использовать первоклассные модули, которые и есть модули просто предоставляется возможность реализовывать ДД.
Ты не можешь создать объект определенного трейта, получить ссылку на трейт, не можешь указатель скастовать к указателю на трейт.
Тоже самое с интерфейсами.
Там нет никаких структур из указателей, никаких ни абстрактных, ни обычных классов.
Я про структуры из указателей не говорил, Trait без dyn это тоже самое что и dyn Trait с девиртуализацией.
dyn = рантайм, dyn = компилтайм.
Различия c Java есть, но говорить что trait это не интерфейс?
Даже примеры переведенные почти напрямую с Java работать будут: https://godbolt.org/z/4K49s6K7e
Исправление MOPKOBKA, :
Трейты не являются типами.
А модули не являются типами в OCaml.
dyn Trait ... это отдельная сущность в языке для динамической диспетчеризации.
Как и в Ocaml есть отдельная возможность использовать первоклассные модули, которые и есть модули просто предоставляется возможность реализовывать ДД.
Ты не можешь создать объект определенного трейта, получить ссылку на трейт, не можешь указатель скастовать к указателю на трейт.
Тоже самое с интерфейсами.
Там нет никаких структур из указателей, никаких ни абстрактных, ни обычных классов.
Я про структуры из указателей не говорил, Trait без dyn это тоже самое что и dyn Trait с девиртуализацией.
dyn = рантайм, dyn = компилтайм.
Различия c Java есть, но говорить что trait это не интерфейс?
Исправление MOPKOBKA, :
Трейты не являются типами.
А модули не являются типами в OCaml.
dyn Trait ... это отдельная сущность в языке для динамической диспетчеризации.
Как и в Ocaml есть отдельная возможность использовать первоклассные модули, которые и есть модули просто предоставляется возможность реализовывать ДД.
Ты не можешь создать объект определенного трейта, получить ссылку на трейт, не можешь указатель скастовать к указателю на трейт.
Тоже самое с интерфейсами.
Там нет никаких структур из указателей, никаких ни абстрактных, ни обычных классов.
Я про структуры из указателей не говорил, Trait без dyn это тоже самое что и dyn Trait с девиртуализацией.
dyn = рантайм, dyn = компилтайм.
Различия есть, но говорить что trait это не интерфейс?
Исправление MOPKOBKA, :
Трейты не являются типами.
А модули не являются типами в OCaml.
dyn Trait ... это отдельная сущность в языке для динамической диспетчеризации.
Как и в Ocaml есть отдельная возможность использовать первоклассные модули, которые и есть модули просто предоставляется возможность реализовывать ДД.
Ты не можешь создать объект определенного трейта, получить ссылку на трейт, не можешь указатель скастовать к указателю на трейт.
Тоже самое с интерфейсами.
Там нет никаких структур из указателей, никаких ни абстрактных, ни обычных классов.
Я про структуры из указателей не говорил, Trait без dyn это тоже самое что и dyn Trait с девиртуализацией.
dyn = рантайм, dyn = компилтайм.
Исправление MOPKOBKA, :
Трейты не являются типами.
А модули не являются типами в OCaml.
dyn Trait ... это отдельная сущность в языке для динамической диспетчеризации.
Как и в Ocaml есть отдельная возможность использовать первоклассные модули, которые и есть модули просто предоставляется возможность реализовывать ДД.
Ты не можешь создать объект определенного трейта, получить ссылку на трейт, не можешь указатель скастовать к указателю на трейт.
Тоже самое с интерфейсами.
Там нет никаких структур из указателей, никаких ни абстрактных, ни обычных классов.
Я про структуры из указателей не говорил, Trait без dyn это тоже самое что и dyn Trait с девиртуализацией.
Исправление MOPKOBKA, :
Трейты не являются типами.
А модули не являются типами в OCaml.
dyn Trait ... это отдельная сущность в языке для динамической диспетчеризации.
Как и в Ocaml есть отдельная возможность использовать первоклассные модули, которые и есть модули просто предоставляется возможность реализовывать ДД.
Ты не можешь создать объект определенного трейта, получить ссылку на трейт, не можешь указатель скастовать к указателю на трейт.
Тоже самое с интерфейсами.
Там нет никаких структур из указателей, никаких ни абстрактных, ни обычных классов.
Я про структуры из указателей не говорил, Trait без dyn это тоже саоме что и dyn Trait с девиртуализацией.
Исправление MOPKOBKA, :
Трейты не являются типами.
А модули не являются типами в OCaml.
dyn Trait ... это отдельная сущность в языке для динамической диспетчеризации.
Как и в Ocaml есть отдельная возможность использовать первоклассные модули, которые и есть модули просто предоставляется возможность ДД.
Ты не можешь создать объект определенного трейта, получить ссылку на трейт, не можешь указатель скастовать к указателю на трейт.
Тоже самое с интерфейсами.
Там нет никаких структур из указателей, никаких ни абстрактных, ни обычных классов.
Я про структуры из указателей не говорил, Trait без dyn это тоже саоме что и dyn Trait с девиртуализацией.
Исходная версия MOPKOBKA, :
Трейты не являются типами.
А модули не являются типами в OCaml.
Ты не можешь создать объект определенного трейта, получить ссылку на трейт, не можешь указатель скастовать к указателю на трейт.
Тоже самое с интерфейсами.
Там нет никаких структур из указателей, никаких ни абстрактных, ни обычных классов.
Я про структуры из указателей не говорил, Trait без dyn это тоже саоме что и dyn Trait с девиртуализацией.