SlideShare une entreprise Scribd logo
1  sur  32
Kotlin Expression
LazySoul
우명인
Expression(if-else)
/* java */
int a = 5;
int b = 10;
int maxValue = a;
if (a > b) {
maxValue = a;
} else {
maxValue = b;
}
Expression(if-else)
val a = 5
val b = 10
// Traditional usage
var maxValue = a
if (a < b) maxValue = b
Expression(if-else)
// With else
var max: Int
if (a > b) {
max = a
} else {
max = b
}
Expression(if-else)
// As expression
val max = if (a > b) a else b
Expression(if-else)
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}
Expression(if-else)
• Java와 다르게 Kotlin 에서는 if, else도 표현식입니다. 따라
서 if else는 항상 반환값이 있습니다.
Expression(if-else)
• Java와 다르게 Kotlin 에서는 if, else도 표현식입니다. 따라
서 if else는 항상 반환값이 있습니다.
• {} 블럭으로 있을 경우에는 마지막 줄의 값을 반환합니다.
Expression(if-else)
• Java와 다르게 Kotlin 에서는 if, else도 표현식입니다. 따라
서 if else는 항상 반환값이 있습니다.
• {} 블럭으로 있을 경우에는 마지막 줄의 값을 반환합니다.
• if, else을 표현식으로 사용 할경우에는 if가 있으면 else도
항상 있어야 합니다.
실습
• if, else를 이용해 홀수, 짝수를 구분
Expression(when)
/* Java */
int x = 1;
switch (x) {
case 1: {
System.out.println("1");
break;
}
case 2: {
System.out.println("2");
break;
}
default: {
System.out.println("default");
break;
}
}
Expression(when)
val x = 1
when {
x == 1 -> print("x == 1")
x == 2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}
Expression(when)
val x = 1
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}
Expression(when)
val x = 1
when (x) {
0, 1 -> print("x == 0 or x == 1")
else -> print("otherwise")
}
Expression(when)
val s = "1"
val x = 1
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}
}
fun parseInt(value : String) : Int {
return 1
}
Expression(when)
val x = 129
val validNumbers = 100..120
when (x) {
in 1..10 -> print("x is in the range")
in validNumbers -> print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
}
Expression(when)
/* Java */
public void test(Object obj) {
if (obj instanceof String) {
System.out.println(((String)obj)
.startsWith(“preFix"));
} else if (obj instanceof Integer) {
Integer.valueOf(String.valueOf(obj));
} else if (obj instanceof JavaPerson) {
((JavaPerson) obj).getName();
}
}
Expression(when)
/* Java */
public void test(Object obj) {
if (obj instanceof String) {
System.out.println(((String)obj)
.startsWith(“preFix"));
} else if (obj instanceof Integer) {
Integer.valueOf(String.valueOf(obj));
} else if (obj instanceof JavaPerson) {
((JavaPerson) obj).getName();
}
}
Expression(when)
/* Kotlin */
fun test(x: Any) : Any = when(x) {
is String -> x.startsWith("prefix")
is Int -> x + 3
is Person -> x.name
else -> false
}
Expression(when)
/* Kotlin */
fun test(x: Any) : Any = when(x) {
is String -> x.startsWith("prefix")
is Int -> x + 3
is Person -> x.name
else -> false
}
smartCasting
Expression(when)
• Java의 switch case와 비슷합니다. 하지만 표현식으로 활용
할수 있어 값을 할당 할 수 있습니다.
Expression(when)
• Java의 switch case와 비슷합니다. 하지만 표현식으로 활용
할수 있어 값을 할당 할 수 있습니다.
• Kotlin의 is는 Java의 instanceOf 와 비슷합니다.
Expression(when)
• Java의 switch case와 비슷합니다. 하지만 표현식으로 활용
할수 있어 값을 할당 할 수 있습니다.
• Kotlin의 is는 Java의 instanceOf 와 비슷합니다.
• {} 블럭으로 있을 경우에는 마지막 라인의 값을 반환합니다
.
Expression(when)
• Java의 switch case와 비슷합니다. 하지만 표현식으로 활용
할수 있어 값을 할당 할 수 있습니다.
• Kotlin의 is는 Java의 instanceOf 와 비슷합니다.
• {} 블럭으로 있을 경우에는 마지막 라인의 값을 반환합니다
.
• when을 표현식으로 사용 할경우에는 else도 항상 있어야
합니다.(enum제외)
Expression(when)
• Java의 switch case와 비슷합니다. 하지만 표현식으로 활용
할수 있어 값을 할당 할 수 있습니다.
• Kotlin의 is는 Java의 instanceOf 와 비슷합니다.
• {} 블럭으로 있을 경우에는 마지막 라인의 값을 반환합니다
.
• when을 표현식으로 사용 할경우에는 else도 항상 있어야
합니다.(enum제외)
• when으로 type을 분기 하면 별도로 casting을 하지 않아도
됩니다.
실습
• when을 이용해 String value를 입력받아 아래의 조건들로
분리
• 1. test 로 시작하는지 (startsWith)
• 2. length 가 3보다 작은지
Expression(try-catch)
/* Java */
String value = "test";
int parsedInt;
try {
parsedInt = Integer.parseInt(value);
} catch (NumberFormatException e) {
e.printStackTrace();
parsedInt = -1;
}
System.out.println(parsedInt); // -1
Expression(try-catch)
/* Kotlin */
val value = "test"
val parsedInt: Int? = try {
value.toInt()
} catch (e: NumberFormatException) {
-1
}
println(parsedInt) //-1
Expression(try-catch)
• Java의 try catch 와 비슷합니다. 하지만 표현식으로 활용
할수 있어 값을 할당 할 수 있습니다.
Expression(try-catch)
• Java의 try catch 와 비슷합니다. 하지만 표현식으로 활용
할수 있어 값을 할당 할 수 있습니다.
• 정상적인 케이스에는 try 값이 exception이 발생하면 catch
값이 할당 됩니다.
Expression(try-catch)
• Java의 try catch 와 비슷합니다. 하지만 표현식으로 활용
할수 있어 값을 할당 할 수 있습니다.
• 정상적인 케이스에는 try 값이 exception이 발생하면 catch
값이 할당 됩니다.
• try, catch 는 {}의 마지막 줄의 값을 반환합니다.
Expression(try-catch)
• Java의 try catch 와 비슷합니다. 하지만 표현식으로 활용
할수 있어 값을 할당 할 수 있습니다.
• 정상적인 케이스에는 try 값이 exception이 발생하면 catch
값이 할당 됩니다.
• try, catch 는 {}의 마지막 줄의 값을 반환합니다.
• Java와 마찬가지로 finally 도 제공하지만 optional 입니다.

Contenu connexe

Tendances

이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)익성 조
 
Seed2016 - 개미수열 한주영 (annotated)
Seed2016 - 개미수열 한주영 (annotated)Seed2016 - 개미수열 한주영 (annotated)
Seed2016 - 개미수열 한주영 (annotated)Jooyung Han
 
Haskell study 13
Haskell study 13Haskell study 13
Haskell study 13Nam Hyeonuk
 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10Nam Hyeonuk
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디quxn6
 
모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6quxn6
 
Python3 10장 문자열이야기
Python3 10장 문자열이야기Python3 10장 문자열이야기
Python3 10장 문자열이야기Jihoon Kong
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Park Jonggun
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부quxn6
 
Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12Nam Hyeonuk
 
정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)Sunyoung Kim
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Park Jonggun
 
정규표현식(Regular expressions)
정규표현식(Regular expressions)정규표현식(Regular expressions)
정규표현식(Regular expressions)Juhee Kim
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitiveNAVER D2
 

Tendances (20)

You dont know_js
You dont know_jsYou dont know_js
You dont know_js
 
Haskell study 8
Haskell study 8Haskell study 8
Haskell study 8
 
이펙티브 C++ (7~9)
이펙티브 C++ (7~9)이펙티브 C++ (7~9)
이펙티브 C++ (7~9)
 
Seed2016 - 개미수열 한주영 (annotated)
Seed2016 - 개미수열 한주영 (annotated)Seed2016 - 개미수열 한주영 (annotated)
Seed2016 - 개미수열 한주영 (annotated)
 
Haskell study 13
Haskell study 13Haskell study 13
Haskell study 13
 
Haskell study 4
Haskell study 4Haskell study 4
Haskell study 4
 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10
 
Haskell study 5
Haskell study 5Haskell study 5
Haskell study 5
 
이펙티브 C++ 스터디
이펙티브 C++ 스터디이펙티브 C++ 스터디
이펙티브 C++ 스터디
 
모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6모어이펙티브 C++ 5,6
모어이펙티브 C++ 5,6
 
What’s new in c++11
What’s new in c++11What’s new in c++11
What’s new in c++11
 
Python3 10장 문자열이야기
Python3 10장 문자열이야기Python3 10장 문자열이야기
Python3 10장 문자열이야기
 
Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수Start IoT with JavaScript - 6.함수
Start IoT with JavaScript - 6.함수
 
이펙티브 C++ 공부
이펙티브 C++ 공부이펙티브 C++ 공부
이펙티브 C++ 공부
 
Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12
 
정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)정규표현식 Regular expression (regex)
정규표현식 Regular expression (regex)
 
Haskell study 7
Haskell study 7Haskell study 7
Haskell study 7
 
Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2Start IoT with JavaScript - 5.객체2
Start IoT with JavaScript - 5.객체2
 
정규표현식(Regular expressions)
정규표현식(Regular expressions)정규표현식(Regular expressions)
정규표현식(Regular expressions)
 
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
[D2 COMMUNITY] ECMAScript 2015 S67 seminar - 1. primitive
 

Plus de Myeongin Woo

DroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed classDroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed classMyeongin Woo
 
Lezhin kotlin jetbrain
Lezhin kotlin jetbrainLezhin kotlin jetbrain
Lezhin kotlin jetbrainMyeongin Woo
 
Kotlin collections
Kotlin collectionsKotlin collections
Kotlin collectionsMyeongin Woo
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.PptxMyeongin Woo
 

Plus de Myeongin Woo (10)

Goodbye null
Goodbye nullGoodbye null
Goodbye null
 
Fp basic-kotlin
Fp basic-kotlinFp basic-kotlin
Fp basic-kotlin
 
DroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed classDroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed class
 
Lezhin kotlin jetbrain
Lezhin kotlin jetbrainLezhin kotlin jetbrain
Lezhin kotlin jetbrain
 
Kotlin collections
Kotlin collectionsKotlin collections
Kotlin collections
 
Kotlin standard
Kotlin standardKotlin standard
Kotlin standard
 
Kotlin class
Kotlin classKotlin class
Kotlin class
 
Kotlin with fp
Kotlin with fpKotlin with fp
Kotlin with fp
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx
 
Kotlin.md
Kotlin.mdKotlin.md
Kotlin.md
 

Kotlin expression

  • 2. Expression(if-else) /* java */ int a = 5; int b = 10; int maxValue = a; if (a > b) { maxValue = a; } else { maxValue = b; }
  • 3. Expression(if-else) val a = 5 val b = 10 // Traditional usage var maxValue = a if (a < b) maxValue = b
  • 4. Expression(if-else) // With else var max: Int if (a > b) { max = a } else { max = b }
  • 5. Expression(if-else) // As expression val max = if (a > b) a else b
  • 6. Expression(if-else) val max = if (a > b) { print("Choose a") a } else { print("Choose b") b }
  • 7. Expression(if-else) • Java와 다르게 Kotlin 에서는 if, else도 표현식입니다. 따라 서 if else는 항상 반환값이 있습니다.
  • 8. Expression(if-else) • Java와 다르게 Kotlin 에서는 if, else도 표현식입니다. 따라 서 if else는 항상 반환값이 있습니다. • {} 블럭으로 있을 경우에는 마지막 줄의 값을 반환합니다.
  • 9. Expression(if-else) • Java와 다르게 Kotlin 에서는 if, else도 표현식입니다. 따라 서 if else는 항상 반환값이 있습니다. • {} 블럭으로 있을 경우에는 마지막 줄의 값을 반환합니다. • if, else을 표현식으로 사용 할경우에는 if가 있으면 else도 항상 있어야 합니다.
  • 10. 실습 • if, else를 이용해 홀수, 짝수를 구분
  • 11. Expression(when) /* Java */ int x = 1; switch (x) { case 1: { System.out.println("1"); break; } case 2: { System.out.println("2"); break; } default: { System.out.println("default"); break; } }
  • 12. Expression(when) val x = 1 when { x == 1 -> print("x == 1") x == 2 -> print("x == 2") else -> { // Note the block print("x is neither 1 nor 2") } }
  • 13. Expression(when) val x = 1 when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> { // Note the block print("x is neither 1 nor 2") } }
  • 14. Expression(when) val x = 1 when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("otherwise") }
  • 15. Expression(when) val s = "1" val x = 1 when (x) { parseInt(s) -> print("s encodes x") else -> print("s does not encode x") } } fun parseInt(value : String) : Int { return 1 }
  • 16. Expression(when) val x = 129 val validNumbers = 100..120 when (x) { in 1..10 -> print("x is in the range") in validNumbers -> print("x is valid") !in 10..20 -> print("x is outside the range") else -> print("none of the above") }
  • 17. Expression(when) /* Java */ public void test(Object obj) { if (obj instanceof String) { System.out.println(((String)obj) .startsWith(“preFix")); } else if (obj instanceof Integer) { Integer.valueOf(String.valueOf(obj)); } else if (obj instanceof JavaPerson) { ((JavaPerson) obj).getName(); } }
  • 18. Expression(when) /* Java */ public void test(Object obj) { if (obj instanceof String) { System.out.println(((String)obj) .startsWith(“preFix")); } else if (obj instanceof Integer) { Integer.valueOf(String.valueOf(obj)); } else if (obj instanceof JavaPerson) { ((JavaPerson) obj).getName(); } }
  • 19. Expression(when) /* Kotlin */ fun test(x: Any) : Any = when(x) { is String -> x.startsWith("prefix") is Int -> x + 3 is Person -> x.name else -> false }
  • 20. Expression(when) /* Kotlin */ fun test(x: Any) : Any = when(x) { is String -> x.startsWith("prefix") is Int -> x + 3 is Person -> x.name else -> false } smartCasting
  • 21. Expression(when) • Java의 switch case와 비슷합니다. 하지만 표현식으로 활용 할수 있어 값을 할당 할 수 있습니다.
  • 22. Expression(when) • Java의 switch case와 비슷합니다. 하지만 표현식으로 활용 할수 있어 값을 할당 할 수 있습니다. • Kotlin의 is는 Java의 instanceOf 와 비슷합니다.
  • 23. Expression(when) • Java의 switch case와 비슷합니다. 하지만 표현식으로 활용 할수 있어 값을 할당 할 수 있습니다. • Kotlin의 is는 Java의 instanceOf 와 비슷합니다. • {} 블럭으로 있을 경우에는 마지막 라인의 값을 반환합니다 .
  • 24. Expression(when) • Java의 switch case와 비슷합니다. 하지만 표현식으로 활용 할수 있어 값을 할당 할 수 있습니다. • Kotlin의 is는 Java의 instanceOf 와 비슷합니다. • {} 블럭으로 있을 경우에는 마지막 라인의 값을 반환합니다 . • when을 표현식으로 사용 할경우에는 else도 항상 있어야 합니다.(enum제외)
  • 25. Expression(when) • Java의 switch case와 비슷합니다. 하지만 표현식으로 활용 할수 있어 값을 할당 할 수 있습니다. • Kotlin의 is는 Java의 instanceOf 와 비슷합니다. • {} 블럭으로 있을 경우에는 마지막 라인의 값을 반환합니다 . • when을 표현식으로 사용 할경우에는 else도 항상 있어야 합니다.(enum제외) • when으로 type을 분기 하면 별도로 casting을 하지 않아도 됩니다.
  • 26. 실습 • when을 이용해 String value를 입력받아 아래의 조건들로 분리 • 1. test 로 시작하는지 (startsWith) • 2. length 가 3보다 작은지
  • 27. Expression(try-catch) /* Java */ String value = "test"; int parsedInt; try { parsedInt = Integer.parseInt(value); } catch (NumberFormatException e) { e.printStackTrace(); parsedInt = -1; } System.out.println(parsedInt); // -1
  • 28. Expression(try-catch) /* Kotlin */ val value = "test" val parsedInt: Int? = try { value.toInt() } catch (e: NumberFormatException) { -1 } println(parsedInt) //-1
  • 29. Expression(try-catch) • Java의 try catch 와 비슷합니다. 하지만 표현식으로 활용 할수 있어 값을 할당 할 수 있습니다.
  • 30. Expression(try-catch) • Java의 try catch 와 비슷합니다. 하지만 표현식으로 활용 할수 있어 값을 할당 할 수 있습니다. • 정상적인 케이스에는 try 값이 exception이 발생하면 catch 값이 할당 됩니다.
  • 31. Expression(try-catch) • Java의 try catch 와 비슷합니다. 하지만 표현식으로 활용 할수 있어 값을 할당 할 수 있습니다. • 정상적인 케이스에는 try 값이 exception이 발생하면 catch 값이 할당 됩니다. • try, catch 는 {}의 마지막 줄의 값을 반환합니다.
  • 32. Expression(try-catch) • Java의 try catch 와 비슷합니다. 하지만 표현식으로 활용 할수 있어 값을 할당 할 수 있습니다. • 정상적인 케이스에는 try 값이 exception이 발생하면 catch 값이 할당 됩니다. • try, catch 는 {}의 마지막 줄의 값을 반환합니다. • Java와 마찬가지로 finally 도 제공하지만 optional 입니다.