Skip to content

Instantly share code, notes, and snippets.

View ozcanzaferayan's full-sized avatar
⚛️
Overreacting

Özcan Zafer AYAN ozcanzaferayan

⚛️
Overreacting
View GitHub Profile
@ozcanzaferayan
ozcanzaferayan / WhenWithoutParameter.kt
Created November 12, 2018 08:45
Kotlin Nedir 2: Switch-case - parametresiz when ifadesi
fun tekMiCiftMi(sayi: Int) : String {
return when {
sayi % 2 == 0 -> "Çifttir"
sayi % 2 == 1 -> "Tektir"
else -> {
throw IllegalArgumentException()
}
}
}
@ozcanzaferayan
ozcanzaferayan / SwitchCaseSmartCasting.kt
Created November 12, 2018 08:51
Kotlin Nedir 2: Switch-case - akıllı tip dönüşümü
fun isMonday(x: Any) = when(x) {
is String -> x.startsWith("Mon")
else -> false
}
fun main(args: Array<String>) {
println(isMonday("Monday")) // true
println(isMonday(42)) // false
}
@ozcanzaferayan
ozcanzaferayan / Extensions.kt
Created November 12, 2018 09:01
Kotlin Nedir 2: Extensions
// Bu extension function bir sayının yüzdesini hesaplar
fun Int.yuzde(yuzde: Int) = (this * yuzde) / 100
fun main(args: Array<String>) {
println(100.yuzde(20)) // 20
println(200.yuzde(20)) // 40
}
@ozcanzaferayan
ozcanzaferayan / ExtensionProperties.kt
Created November 12, 2018 10:34
Kotlin Nedir 2: Extension Properties örneği
// Celcius işareti ekleme fonksiyonu
val Int.c: String
get() = this.toString() + "ºC";
fun main(args: Array<String>) {
println(100.c) // 100ºC
}
@ozcanzaferayan
ozcanzaferayan / Todo.kt
Created November 12, 2018 10:43
Kotlin Nedir 2: Todo fonksiyonu örneği
fun hesapla() {
TODO("daha sonra yapılacak")
}
fun main(args: Array<String>) {
println(hesapla())
}
/* Çıktısı
@ozcanzaferayan
ozcanzaferayan / Predicate.kt
Created November 12, 2018 12:31
Kotlin Nedir 2: Predicate örnekleri
fun main(args: Array<String>) {
// listOf() ile bir tamsayı listesi oluşturulur
val sayilarList = listOf(2, 3, 4, 6, 23, 90)
// -> operatörü ile predicate belirlenir.
val hepsiPozitifMi = sayilarList.all({ sayi -> sayi > 0 })
println(hepsiPozitifMi)
// predicate şartındaki değişken kısaca it keyword'ü ile belirlenebilir.
val herhangiBiriOndanBuyukMu = sayilarList.any({ it > 10 })
@ozcanzaferayan
ozcanzaferayan / LazyProperties.kt
Last active November 12, 2018 12:59
Kotlin Nedir 2: Lazy property örneği
val tembelDeger: String by lazy {
println("hesaplandı!")
"Hello World"
}
fun main(args: Array<String>) {
// İlk çağrımda Hello World ifadesi değere atanır ve hesaplandı! yazar
println(tembelDeger)
@ozcanzaferayan
ozcanzaferayan / JavaHasRawTypes.java
Created November 20, 2018 05:54
Kotlin Nedir: Java raw tiplere sahiptir
import java.util.*;
class Main {
public static void main(String[] args) {
List stars = Arrays.asList("Java", "Has", "Raw", "Types");
for(Object star: stars){
System.out.println((String)star); // cast gerekli
}
}
}
@ozcanzaferayan
ozcanzaferayan / CovariantArrays.java
Last active November 20, 2018 06:54
Kotlin Nedir: Java'daki array'ler covariant (değişken) yapıdadırlar.
import java.util.*;
class Main {
public static void main(String[] args) {
Integer[] ints = {1, 2, 3};
Object[] objs = ints; // Integer tipi, Object'in alt türü olduğu için hata vermez.
objs[0] = "asd"; // Hata: java.lang.ArrayStoreException: java.lang.String
}
}
@ozcanzaferayan
ozcanzaferayan / InvariantGenerics.java
Last active December 18, 2018 09:08
Kotlin Nedir: Java'daki generic'ler invariant (değişmez) yapıdadırlar.
import java.util.*;
class Main {
public static void main(String[] args) {
List<Integer> ints = new ArrayList<Integer>();
List<Object> objs = ints; // Derleme zamanı hatası: incompatible types: List<Integer> cannot be converted to List<Object>
objs.add("abc"); // Normalde bu kullanım biçimi doğrudur.
Integer s = ints.get(0); // Eğer generic'ler invariant olmasaydı bu hata runtime'da alınacaktı.
// ClassCastException: Cannot cast String to Integer
}