W tym poście chciałbym Wam przedstawić podstawowe elementy Kotlina takie jak:
– Zmienne
– Typy proste
– String templates
Jeśli nie przeczytałeś poprzedniego postu z tej serii, to polecam zrobić to teraz (https://arasoftware.pl/2020/03/23/kotlin-1/)
Nie będę tutaj oczywiście tworzyć kolejnej dokumentacji do Kotlina, a wskażę tylko kilka ciekawych rzeczy,na które warto zwrócić uwagę.
Zmienne
W Kotlinie zmienne możemy podzielić na dwie grupy:
– niemutowalne (Read-only) oznaczone słowem kluczowym „val„,
– mutowalne (z możliwością nadpisania ich wartości) oznaczone słowem kluczowym „var„.
Przykład:
val name: String = "Radek"
var age: Int = 30
age += 1
println(age) // it will print 31
name = "Thomas" // compilation error!!!! You can't change name value
Jak widać na pwyższym przykładzie, zmienna 'name’ oraz 'age’ posiadają odpowiednie typy danych. Pierwsza z nich, 'age’, jest typu String, a kolejna typu Int. Deklaracja typu zmiennej następuje po jej nazwie i znaku ’:’.
Kotlin daje nam możliwość dynamicznego typowania zmiennych.
var stringVariable = "Radek" //this will be a String
var numberVariable = 10 // this will be a Int
var booleanVariable = true //this will be Boolean
Typy proste
Z racji że, Kotlin jest językiem uruchamianym na JVM, to typy proste są dosyć zbliżone do tych z Javy.
Ponizej znajdują się tableki z zakresami dla numerycznych typów prostych:
Zobaczmy to na żywym przykładzie:
val a = 1 // Int
val b = 5000000000 // Long
val c = 5L // also Long
val d: Byte = 1 // Byte
val e = 2.123 // Double
val f = 2.7182818284 // Double
val g = 2.7182818284f // Float, actual value is 2.7182817
Z typem Boolean sprawa jest prostrza. Przyjmuje on jak zawsze dwie wartości, 'true’ oraz 'false’.
val a: Boolean = true
val b: Boolean = false
if (a && b) //result is false
//do something
if (a || b) //result is true
//do something
if (a && !b) //result is true because of negation !
//do something
Typ String rządzi się, jak zawszw w świecie JVM, swoimi prawami. Cały ciąg znaków zapisany jako String to nic innego jak tablica jednowymiarowa, gdzie każdy znak jest zapisany jako kolejny element tej tablicy. Kotlin daję nam możliwość iteracji po ciągu znaków za pomocą pętli 'for’.
Przykład:
val test: String = "abcdefghijk"
for (item in test) {
println(item)
}
/* Prints:
a
b
c
d
e
f
g
h
i
j
k
*/
Jak już jesteśmy przy String’ach, to warto też wspomnieć o „Raw String”, czyli wielolinijkowych ciągach znaków. Mogą one zawierać dowolne znaki takie jak spacje.
val text = """
Hello World!
How are you?
"""
print(text)
/* output:
Hello World!
How are you?
*/
Możemy też usunąć tak zwany lewy margines, czyli przesunąć tekst maksymalnie do lewej strony konsoli:
val text = """
|Hello World!
|How are you?
""".trimMargin()
print(text)
/* output:
Hello World!
How are you?
*/
String templates
Jest jeszcze jeden fajny feature, który z mojego punktu widzenia (programisty JAVA), jest warty zauważenia. Jest to String Template, czyli możliwość używania zmiennych i wyrażeń bezpośrednio w ciągu znaków.
Aby użyć wartości zmiennej w String Templates wystarczy poprzedzić jej nazwę znakiem '$’. Podobnie sprawa wygląda gdy mówimy o użyciu wyrażenia, z tym że dane wyrażenie musi być jeszcze objęte nawiasami 'wąsatymi’ { }.
Zobaczmy jak to wygląda na żywo:
val s = "abc"
println("$s.length is ${s.length}") // prints "abc.length is 3"
Podsumowanie
Istnieje wiele ciekawych rzeczy, które mogą ułatwić życie programiście takich jak:
- Dynamiczne typowanie zmiennych,
- Łatwe i czytelne deklarowanie tego czy zmienna ma być mutowalna czy też nie,
- Raw String,
- String Template.
Dzięki takim rozwiązaniom jesteśmy wstanie pisać prosty i przejżysty kod. Przy okazji ten kod nie ma miliona linii 🙂
Dzięki za poświęcenie czasu na przeczytanie kolejnegi już postu o Kotlinie. Zachęcam jak zawsze do oceny, zostawienia komentarza oraz opublikowania tego postu w social mediach.