목록전체 (348)
파게로그
https://kotlinlang.org/docs/properties.html https://umbum.dev/591 Getters and Setters 프로그래밍에서, getters는 property의 값을 얻기 위해 사용되며, setters는 property의 값을 설정하기 위해 사용된다. Kotlin에서 getters와 setters는 수의적이며, 이를 직접 생성하지 않을 때에는 자동으로 생성된다. How Getters and Setters Work class Student() { var name: String = "Unknown" } fun main(args: Array) { val student = Student() println(student.name) student.name = "Miu" p..
Constructors 생성자는 클래스 속성을 초기화하는 데 있어서 정확한 방법이다. 생성자는, 특별한 멤버 함수로서, 객체가 처음 생성될 때(instantiated) 호출된다. 그러나 Kotlin에서 작동하는 방법은 다소 다르다. Kotlin에서는 두 가지의 생성자가 있다. ▪ Primary constructor consise way to initialize a class ▪ Secondary constructor allows you to put additional initialization logic Primary Constructor primary constructor는 클래스 헤더의 일부이다. class Person(val firstName: String, var age: Int) { // cla..
Kotlin Introduction to OOP Kotlin은 함수형 프로그래밍과 객체지향형 프로그래밍을 모두 지원한다. higher-order functions, function types, lambdas를 지원하여 함수형 프로그래밍 스타일에서 일하는 좋은 환경을 제공한다. 덩달아 객체지향형 프로그래밍도 지원한다. OOP에서는, 복잡한 문제는 객체를 생성함으로써 작은 문제로 쪼갤 수 있다. 이러한 객체는 두 개의 특성을 공유한다. state와 behavior이다. 예를 들면 다음과 같다. 예1) Lamp는 객체이다. ▪ on 상태와 off 상태가 있다. ▪ turn on 행위와 turn off 행위가 있다. 예2) Bicycle은 객체이다. ▪ current gear, two wheels, number..
Tail Call tail call에 대해서 알아보자. fun foo() { var a = 10 return bar(a) } fun bar(n: Int) { return n+1 } fun main(args: Array) { foo() } ①main()이 foo()를 호출하면, ②본래는 foo()가 스택에 남아 있고 ③bar(a)를 계산한 후 ④그 값을 반환받아 ⑤foo()가 그 값을 반환하는 주체가 된다. 그런데 위와 같은 프로그램에서, 사실 foo()는 bar(a)의 값을 반환받은 후 아무것도 하지 않고 이를 그대로 돌려주기만 할 뿐이다. 곧, ②, ④, ⑤는 필요없는 과정인 셈이다. 다만, foo()가 bar()를 호출해놓고 사라져버리게 되면, main()로 값을 반환할 주체가 없게 된다. Kotli..
Default Arguments Kotlin에서는 함수를 선언할 때 파라미터에 디폴트 값을 설정할 수 있다. 함수가 호출될 때 인수가 전달되면 이러한 인수가 파라미터로 사용되지만, 인수가 전달되지 않으면 디폴트 값이 사용된다. 구체적으로는 다음과 같이 경우를 나누어볼 수 있다. 🙂 All arguments are passed fun main(args: Array) { foo('y', 2) } fun foo(letter: Char = 'x', number: Int = 1) { // ... } 이 때에는 모든 인수가 전달되었으므로 foo에서 letter는 'y', number는 2이다. 🙂 Not All arguments are passed fun main(args: Array) { foo('y') } fu..
infix notation을 사용하여 호출할 수 있는 함수가 되기 위해서는 아래의 조건을 모두 만족해야 한다. ▪ member function 또는 extension function일 것 ▪ 오직 하나의 파라미터를 가질 것 ▪ infix 키워드를 사용할 것 infix notation을 지원하는 함수는 다음과 같이 사용이 가능하다. fun main(args: Array) { var a = true var b = false var result: Boolean result = a or b println(result) result = a.or(b) println(result) result = a and b println(result) result = a.and(b) println(result) } 위 프로그램의..
Kotlin 함수의 종류 ▪ Kotlin Standard Library Function ▪ User-defined functions 함수 정의하기 fun 키워드를 통해 정의한다. fun foo() { // fun foo(): Unit // function body } 위와 같이 아무 값도 반환하지 않는 것은, 사실 return type이 Unit임을 의미한다. 아래와 같이 return type을 지정할 수 있다. fun add(n1: Double, n2: Double): Int { val sumDouble = n1 + n2 val sumInteger = sumDouble.toInt() return sumInteger } 한편 single expression을 반환하면, 다음과 같이 중괄호 없이 =만을 통..
while while문과 do-while문은 Java와 동일하게 사용할 수 있다. iterate through a range Python의 range와 비슷한 점도 있고, 다른 점도 있다. fun main(args: Array) { for (i in 1..10) { println(i) } } ▪ i를 명시적으로 선언하지 않아도 동작한다. ▪ range는 닫힌 구간이다. ▪ 위 프로그램의 실행 결과는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 fun main(args: Array) { for (i in 10..1) { println(i) } } ▪ 위 프로그램의 실행 결과는 다음과 같다(아무것도 출력되지 않는다). fun main(args: Array) { for (i in 5 downTo 1) ..