일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 델타 rule
- 선형판별분석
- 로지스틱 회귀
- 자바ORM표준JPA프로그래밍
- 이것이 MySQL이다
- vector미분
- CH01
- 2018
- Perceptron Convergence theorem
- 인공지능
- chapter02
- 1차예선
- directed graphical model
- Fisher discriminant analysis
- secant
- SCPC
- MySQL
- 알고리즘대회
- Numerical optimization
- 개발순서
- graphical models
- bisection
- chapter01
- 알고리즘
- 근구하기
- 5397번
- falsePosition
- 스터디
- undirected graphical model
- 선형분류
- Today
- Total
목록스터디/코틀린 완벽 가이드 (9)
computer_study
12.1 자바 코드를 코틀린에서 사용하기 12.1.1 자바 메서드와 필드 자바 메서드를 아무 문제 없이 코틀린 함수처럼 노출시킬 수 있다. 뉘양스 차이는 유의해야 한다. 12.1.2 Unit과 void 자바에서 void를 반환하면 코틀린에선 Unit을 반환하는 함수로 본다 12.1.3 합성 프로퍼티 코틀린에선 자바의 게터나 세터를 일반적인 코틀린 프로퍼티처럼 쓸 수 있게 합성 프로퍼티를 노출시켜준다. 게터는 파라미터가 없는 메서드. 메서드 이름이 get으로 시작해야 한다. 세터는 파라미터가 하나만 있는 메서드. 메서드 이름이 set으로 시작해야 한다. Person class에 getAge()가 있다면 코틀린에선 person.age와 같은 식으로 쓸 수 있다. 12.1.4 플랫폼 타입 코틀린은 자바 코드로..
알지 못하는 타입의 데이터를 조작하는 코드를 작성할 수 있게 해준다. 9.1 타입 파라미터 9.1.1 제네릭 선언 class TreeNode(val data: T){ private val _children = arrayListOf() var parent: TreeNode? = null private set ... fun addChild(data: T) = ... } fun main(){ val root = TreeNode("Hello").apply{ addChild("World") addChild("!!!") } ... } 타입 파라미터는 클래스 이름 바로 뒤에 타입 파라미터는 관습적으로 T, U, V등의 짧은 대문자를 사용한다. java처럼 raw타입을 사용할 수 없고, TreeNode 처럼 구체적인 ..
1. 상속 extends, implements 대신 콜론(:)으로 표시 코틀린 함수와 프로퍼티는 기본적으로 final, 오버라이드하게 허용하기 위해선 open을 명시해야 한다. (반대로 자바에선 프로퍼티가 암시적으로 open, final을 사용해 오버라이드를 막는다.) 코틀린에선 멤버를 오버라이드 하는 경우에 override 키워드를 앞에 붙여야 한다 (자바에서는 꼭 표시를 하지 않아도 된다) open class Vehicle{ var currentSpeed = 0 fun start(){ println("I'm moving") } fun stop(){ println("Stopped") } } open class FlyingVehicle : Vehicle(){ fun takeOff(){ println("T..
1. 컬렉션 엘리먼트들로 이뤄진 그룹을 저장하기 위해 설계된 객체 코틀린에는 여러 컬렉션과 그 안의 여러 가지 데이터 구조를 조작하는 다양한 API들이 있다. Iterator 타입은 기본적으로 자바와 동일. (remove()는 MutableIterator로 옮겨져있다.) kotlin.collections 패키지에 있는 별명을 통해 대부분의 표준 컬렉션을 쓸 수 있다 (java.util 패키지 클래스를 사용할 필요가 없다.) 컬렉션 생성 emptyList()/emptySet() - 불변인 빈 리스트/집합 인스턴스 생성 listOf()/setOf() - 인자로 제공한 배열에 기반한 불변 인스턴스 생성 listOfNotNull() - Null이 아닌 값으로 이루어진 불변 리스트 mutableListOf()/ ..
1. 이넘 클래스 미리 정의된 상수들로 이뤄진 제한된 집합을 표현하는 특별한 클래스 // 코틀린 enum class WeekDay{ Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday // 함수, 프로퍼티, 주생성자, 부생성자, 초기화블록 등을 포함할 수 있다. // 이넘상수 목록 뒤에 와야 하고, 위의 것들을 포함한다면 목록 뒤에 ;를 붙여야 한다. } fun WeekDay.isWorkDay() = this == WeekDay.Saturday || this == WeekDay.Sunday fun main(){ println(WeekDay.Monday.isWorkDay()) // false } // 자바 enum class가 아닌 enum으로 ..
함수타입 // 함수가 인자를 받지 않는 경우에도 함수 타입의 파라미터 목록에 빈 괄호를 사용해야 한다. fun measureTime(action: () -> Unit): Long{ ... } //********** val succes: (Int) -> Int = {n -> n+1} // ok , 타입을 명시해서 컴파일러가 추론 없이 알 수 있도록 할 수 있다. val error: Int -> Int = {n -> n+1} // error 호출 가능 참조 존재하는 함수 정의를 함수 타입의 식으로 사용할 수 있는 단순한 방법. 함수 이름 앞에 ::를 붙여서 호출 가능 참조를 할 수 있다. fun evalAtZero(f: (Int) -> Int) = f(0) fun inc(n: Int) = n+1 fun de..
코틀린 함수의 구조 kotlin import kotlin.math.PI fun circleArea(radius : Double) : Double { return PI*radius*radius } // 단일 식으로만 구현할 수 있다면 중괄호 생략 가능 fun circleArea2(radius: Double): Double = PI*radius*radius fun circleArea3(radius: Double) = { PI*radius*radius } fun main(){ print("Enter radius: ") val radius = readLine()!!.toDouble() // !!이 붙는 이유 : 이 변수는 null이 아니다를 의미 println("Circle area: ${circleArea(r..
변수 정의 // java String text = "tmp"; // java10부턴 var를 사용 가능 var text = "tmp"; // kotlin // 세미콜론을 작성하지 않는다. // 필요하다면 타입을 명시할 수 있다. val text = "tmp" val text: String = "tmp" 기본 문자열 연산 코틀린에선 ==가 equals를 호출한다. java의 ==와 != 같은 참조 동등성을 사용하고 싶다면, ===와 !== 연산자를 사용한다. 배열 val a = emptyArray() val b = arrayOf("hello", "world") val c = arrayOf(1, 4, 9) // 코틀린에는 new연산자가 없다. // 배열 원소를 명시적으로 초기화 해주어야 된다.