Обобщённые функции для trait
Пишите одну функцию для множества типов.
«Обобщённые функции для trait» — бесплатный урок Mojo Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Mojo Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Mojo Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
One Function, Many Types
The real power of traits is generic code: write a function once and it works for every conforming type. 🚀
A Trait as a Bound
You use a trait as a bound on a generic parameter, promising the type has the methods you call.
Generic Parameter Syntax
Inside square brackets you name a type parameter and the trait it must satisfy, then use it like any type.
fn announce[T: Greetable](item: T):
print(item.greet())Calling Trait Methods
Within the function you may call any method the trait guarantees. The compiler knows greet exists on T.
Works for Every Conformer
Pass a Dog or a Robot to the same function. Both conform to Greetable, so both are accepted seamlessly.
announce(Dog("Rex"))
announce(Robot())Type Safety Stays
Generics are not loose. If a type does not satisfy the bound, the compiler refuses it before the program runs.
No Runtime Penalty
Mojo specializes generic code at compile time, generating a fast version per type. Flexibility costs no speed.
Less Duplication
Without generics you would copy a function for each type. A trait bound lets one definition serve them all, cutting duplication.
Multiple Bounds
A parameter can require several traits at once, ensuring the type has every capability the function needs.
Designing Around Traits
Good Mojo APIs ask for the smallest trait they need. Functions stay flexible while expressing exact requirements.
The Whole Picture
Trait, conformance, and generics combine: define a contract, implement it, then write one reusable function over it.
fn print_all[T: Stringable](x: T):
print(String(x))Quick Check
Why use a trait bound on a generic function?
Recap
Generic functions with a trait bound work across all conforming types, staying type-safe and fast. You now write reusable Mojo! 🎉
Часто задаваемые вопросы
Урок «Обобщённые функции для trait» бесплатный?
Да — полный текст урока «Обобщённые функции для trait» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Mojo Academy, подпишись на CoddyKit PRO. Курс Mojo Academy содержит 4 уроков всего.
Чему я научусь в уроке «Обобщённые функции для trait»?
Пишите одну функцию для множества типов. Ты практикуешь Mojo Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Mojo Academy?
Предыдущий опыт не требуется. Mojo Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Обобщённые функции для trait»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Mojo Academy?
Да. Каждый урок Mojo Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Что такое trait?
- Соответствие struct требованиям trait
- Встроенные trait, например Copyable
- Обобщённые функции для trait