コース概要
Introduction
Refresher on Kotlin Basics
Using Advanced Functions in Kotlin
- Using Nested Functions to Reuse Functionality in Kotlin
- Using the Infix Notation to Call Functions in Kotlin
- Declaring Anonymous Functions in Kotlin
- Using the Inline Modifier for Efficiency in Kotlin
- Implementing Returns and Local Returns When Working with Advanced Functions in Kotlin
- Implementing Tail Recursion for Optimization in Kotlin
- Using Operator Overloading in Kotlin
- Using Lambdas with Receivers to Create Restrictions on DSL's in Kotlin
- Invoking Instances in Kotlin
- Using Functional Constructs in Kotlin
- Function Composition
- Currying
- Other Constructs
- Summary of Advanced Functional Aspects of Kotlin
Exploring Class Scenarios in Kotlin
- Implementing Fields in Kotlin
- Using the "lateinit" Modifier in Kotlin
- Understanding Nested and Inner Classes in Kotlin
- Defining "Static Methods" in Kotlin Using Companion Objects
- Hiding Class Constructors in Kotlin
- Marking Classes as Sealed in Kotlin
- Using Type Aliases in Kotlin
- Summary of Advanced Features of Kotlin for Classes
Implementing Delegation in Kotlin
- Understanding the Concept of Member Delegation in Kotlin
- Delegating Member Functions to Another Class in Kotlin
- Delegating Properties in Kotlin for Code Reuse Efficiency
- Using Built-in Delegated Properties in Kotlin
- Delegating Local Properties in Kotlin for Code Reuse
- Implementing Extension Properties in Classes in Kotlin
- Summary of the Different Aspects of Delegation in Kotlin
Gaining an In-Depth Understanding of Generics in Kotlin
- Understanding Generic Constraints
- Understanding Variance and Invariance in Generics
- Using the "out" Modifier to Express Covariance in Generics in Kotlin
- Expressing Contravariance in Kotlin
- Exploring the Concept of Type Projections and Star Projections in Kotlin
- Summary of Advanced Generics in Kotlin
Metaprogramming in Kotlin
- Overview of Reflection
- Using Java Reflection with Kotlin Using the Reflection API
- Using Kotlin's Reflection API
- Handling Type Erasure in Kotlin
- Using Reified Generics in Kotlin
- Defining Custom Annotations in Kotlin
- Summary of Metaprogramming and Introspection Techniques in Kotlin
Performing Asynchronous Programming in Kotlin
- Understanding the Problem of Asynchronous Programming
- Implementing Asynchronous Programming and Coroutines in Kotlin
- Implementing Async and Await in Kotlin Using Coroutines
- Implementing Yield in Kotlin
- Understanding the Advantages of Coroutines Over Reactive Extensions
- Summary of Coroutines in Kotlin
Summary and Conclusion
要求
- An understanding of the fundamentals of Kotlin
Audience
- Developers interested in gaining a deeper knowledge of Kotlin programming
お客様の声 (7)
コースの密度、トピックの網羅性。複雑なトピックは適切なレベルで説明されているため、いくつかの空白部分(DSL など)が残っていても、すでに基礎の共通理解があり、少なくとも Google で質問を形成する方法を知っているため、一人で続けるのは難しくありません。
Alexey Baryshnev - C.T.Co SIA
コース - Advanced Kotlin Programming
Machine Translated
A format - lot of new info, but it felt pretty understandable and comfortable to learn, most of it I managed to remember and use when necessary at the next topics.
Alina Karpovich - C.T.Co SIA
コース - Advanced Kotlin Programming
Trainer competence, wide subject knowledge. I have learned a lot new stuff, received valuable comments and answers to my questions.
Ilya Ginter - C.T.Co SIA
コース - Advanced Kotlin Programming
live communication and good answers to questions
Alexander Semyonov - C.T.Co SIA
コース - Advanced Kotlin Programming
Execute exercises in mode online, it is cool. Fast answer about additional questions
Oleg Sushik - C.T.Co SIA
コース - Advanced Kotlin Programming
Positive approach
Arseniy - C.T.Co SIA
コース - Advanced Kotlin Programming
I liked exercises and questions where we should think like a compiler. Sometimes it feels like you understand topic we are discussing and with exercise we could make sure not only that we feel that way but really understood. In case exercise was difficult for someone, solution was provided by clear steps what and why we do to make this working. Also by going further with these exercises it was really nice that we looked at previous ones understanding how we can improve something that was already done by one solution.