background preloader

Kotlin

Facebook Twitter

Introduction to Kotlin (Google I/O '17) Kotlin Programming Language. Kotlin Koans: The Best Way To Learn Kotlin for Java Developers. Kotlin Koans: The Best Way To Learn Kotlin for Java Developers. Classes and Inheritance. Edit Page Classes Classes in Kotlin are declared using the keyword class: class Invoice { /*...*/ } The class declaration consists of the class name, the class header (specifying its type parameters, the primary constructor etc.) and the class body, surrounded by curly braces.

Classes and Inheritance

Both the header and the body are optional; if the class has no body, curly braces can be omitted. Visibility Modifiers. Edit Page Classes, objects, interfaces, constructors, functions, properties and their setters can have visibility modifiers.

Visibility Modifiers

(Getters always have the same visibility as the property.) There are four visibility modifiers in Kotlin: private, protected, internal and public. The default visibility, used if there is no explicit modifier, is public. On this page, you'll learn how the modifiers apply to different types of declaring scopes. Packages Functions, properties and classes, objects and interfaces can be declared on the "top-level", i.e. directly inside a package: // file name: example.kt package foo fun baz() { ... } class Bar { ... } If you do not specify any visibility modifier, public is used by default, which means that your declarations will be visible everywhere;If you mark a declaration private, it will only be visible inside the file containing the declaration;If you mark it internal, it is visible everywhere in the same module;protected is not available for top-level declarations.

Kotlin doesn't play nicely with Jackson if the property name contains "is" - Support - Kotlin Discussions. Android - How to make the code simple in kotlin? Understanding the need for Kotlin let. Add multi-density vector graphics   Android Studio includes a tool called Vector Asset Studio that helps you add material icons and import Scalable Vector Graphic (SVG) and Adobe Photoshop Document (PSD) files into your project as vector drawable resources.

Add multi-density vector graphics  

Using vector drawables instead of bitmaps reduces the size of your APK because the same file can be resized for different screen densities without loss of image quality. For older versions of Android that don't support vector drawables, Vector Asset Studio can, at build time, turn your vector drawables into different bitmap sizes for each screen density. About Vector Asset Studio Vector Asset Studio adds a vector graphic to the project as an XML file that describes the image. Annotations - Kotlin Programming Language. Edit Page Annotation Declaration Annotations are means of attaching metadata to code.

Annotations - Kotlin Programming Language

To declare an annotation, put the annotation modifier in front of a class: Additional attributes of the annotation can be specified by annotating the annotation class with meta-annotations: @Target specifies the possible kinds of elements which can be annotated with the annotation (classes, functions, properties, expressions etc.) @Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION) @Retention(AnnotationRetention.SOURCE) @MustBeDocumented annotation class Fancy Usage If you need to annotate the primary constructor of a class, you need to add the constructor keyword to the constructor declaration, and add the annotations before it: Square/kotlinpoet: A Kotlin API for generating .kt source files. KotlinConf 2018 - Writing Your First Kotlin Compiler Plugin by Kevin Most. Mastering Kotlin standard functions: run, with, let, also and apply. Some of the Kotlin’s standard functions are so similar that we are not sure which to use.

Mastering Kotlin standard functions: run, with, let, also and apply

Here I will introduce a simple way to clearly distinguish their differences and how to pick which to use. The functions that I’ll focus on is run, with, T.run, T.let, T.also and T.apply. I call them scoping functions as I view their main functionality as provide an inner scope for the caller function. The simplest way to illustrate scoping is the run function. Kotlin let, run, also, apply, with. In this tutorial, we’ll be implementing some of the important standard library functions available in Kotlin.

Kotlin let, run, also, apply, with

The kotlin-stdlib provides us with useful higher order functions implementing idiomatic patterns. We’ll see how they make programming in Kotlin so easier and faster. The functions that we’re going to discuss below are: The difference between Kotlin’s functions: ‘let’, ‘apply’, ‘with’, ‘run’ and ‘also’ Keeping the Daggers Sharp ⚔️ Calling Kotlin from Java. Edit Page Kotlin code can be called from Java easily.

Calling Kotlin from Java

Properties A Kotlin property is compiled to the following Java elements: A getter method, with the name calculated by prepending the get prefix;A setter method, with the name calculated by prepending the set prefix (only for var properties);A private field, with the same name as the property name (only for properties with backing fields). For example, var firstName: String gets compiled to the following Java declarations: private String firstName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } If the name of the property starts with is, a different name mapping rule is used: the name of the getter will be the same as the property name, and the name of the setter will be obtained by replacing is with set.

JvmStatic. Sealed Classes Instead of Exceptions in Kotlin. Exceptions are a common mean to handle errors.

Sealed Classes Instead of Exceptions in Kotlin

However, they have some drawbacks when it comes to compiler support, safety and traceability. Fortunately, we can leverage Kotlin’s sealed classes to create result objects that solve the mentioned problems. This way, we get great compiler support and the code becomes clean, less error-prone, easy to grasp and predictable.

Code with exceptions can become more error-prone, less predictable and harder to understand, especially when multiple exceptions are involved.Instead of throwing an exception, you can return different result objects representing either “success” or “error”. HTML Builder. Kotlin eBook. Kotlin - Functions and Properties in enums. Java - Difference between a class and object in Kotlin.

Regex (Kotlin)

Sort collection by multiple fields in Kotlin. Kotlin distinctBy with condition. Convert Date to LocalDate or LocalDateTime and Back. 1.

Convert Date to LocalDate or LocalDateTime and Back

Overview Starting with Java 8, we have a new Date API – java.time. However, sometimes we still need to perform conversions between the new and the old APIs, and work with date representations from both. 2. Converting java.util.Date to java.time.LocalDate Let's start with converting the old date representation to the new one. Here, we can take advantage of a new toInstant() method which was added to java.util.Date in Java 8. When we're converting an Instant object, it's required to use a ZoneId, because Instant objects are timezone-agnostic – just points on the timeline.

The atZone(ZoneId zone) API from Instant object returns a ZonedDateTime – so we just need to extract LocalDate from it using the toLocalDate() method. In our first example here, we're using the default system ZoneId: A similar solution to the above one, but with a different way of creating an Instant object – using the ofEpochMilli() method: In this case, we don't need to worry about the timezone: 3. 4. 5. 6. 7. Enum class derived from numeric type (C-type enums) - Kotlin Discussions. Many libraries make extensive use of numeric enums.

Enum class derived from numeric type (C-type enums) - Kotlin Discussions

Android programming has a special annotation @IntDef to provide value checking. However, defining numeric enums is cumberson: var mode: Int = NAVIGATION_MODE_STANDARD companion object { , NAVIGATION_MODE_LIST.toLong(), NAVIGATION_MODE_TABS.toLong()) annotation class NavigationMode const val NAVIGATION_MODE_STANDARD = 0 const val NAVIGATION_MODE_LIST = 1 const val NAVIGATION_MODE_TABS = 2 } It would by nice to be able to define numeric enums as easily as Java enums by declaring an integer numeric supertype. var mode: NavigationMode = NAVIGATION_MODE_STANDARD enum class NavigationMode: Int { NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS } At bytecode level, this should produce the same code as @IntDef above.

Ktor - asynchronous Web framework for Kotlin. Quick Start - Quick Start - Ktor. Retrofit. API Declaration Annotations on the interface methods and its parameters indicate how a request will be handled. Request Method Every method must have an HTTP annotation that provides the request method and relative URL. KotlinConf 2018 - Sealed Classes Opened My Mind: How We Use Kotlin to Tame State at Etsy by Patrick.

Similarities and differences of Swift and Kotlin. 3 Platforms in 5 Minutes with Kotlin (Android Dev Summit '18) Kotlin/Native as an Apple Framework. Edit Page Compiling Kotlin/Native code and use it from Objective-C and Swift Kotlin/Native provides bi-directional interoperability with Objective-C/Swift. Objective-C frameworks and libraries can be used in Kotlin code. Kotlin modules can be used in Swift/Objective-C code too. Besides that, Kotlin/Native has C Interop.

There is also the Kotlin/Native as a Dynamic Library tutorial for more information. Kotlin on Raspberry Pi – Hadi Hariri. Last week we announced the availability of the first technology preview for Kotlin/Native, something that we’ve been working on since September 2016. With this first preview release, you can now compile Kotlin to run natively on various platforms, including Mac OS Ubuntu Linux (and other Linux flavours) Apple iOS (arm64) Raspberry Pi I decided to give it a whirl and see what it takes to get a simple Hello World!

Running on the Raspberry Pi, which has been sitting in my desk draw for months now (albeit with a custom-made Lego box) My device is the Raspberry Pi 2, running NOOBS. Setting up the compiler To target Raspberry Pi, we need to compile our applications on a Linux machine, targeting the Pi. First thing is to download the right compiler distribution, in our case Linux. Once we’ve unzipped the compiler, in the bin folder we have access to three script files. Require. Tutoriel Kotlin: Les mots clé lateinit et lazy dans kotlin. Kotlin est un langage de programmation robuste en se sens où il vous évite l’une des erreurs des classes la plus commune tel que NullPointerException.

A cet effet, une variable déclarée dans kotlin est non nul par défaut.Et lorsque vous déclarez une nouvelle variable dans kotin ,vous devez toujours l’initialiser. Vous pouvez initialiser la variable soit en définissant une valeur par défaut de son type, soit en définissant sa valeur à nul. Par contre , pour initialiser la variable à une valeur nul vous devez explicitement dire à kotlin que la variable peut prendre une valeur nul. Qu’en est-il alors de si l’on souhaite créer un objet et ne pas initialiser certaines de ses variables membres lors de leurs déclarations comme on sait le faire en Java. Ou qu’en est-il de si vous souhaitez initialiser une variable plus tard via une injection de dépendance .