분류 전체보기

컬렉션의 원소를 element; element; element .. 로 출력하는 함수를 만들어보자. fun joinToString( collection: Collection, // 제네릭 separator: String, prefix: String, postfix: String ): String { val result = StringBuilder(prefix); for((index, element) in collection.withIndex()){ if(index > 0) result.append(separator) result.append(element) } result.append(postfix) return result.toString() } fun main() { var list = listOf(..
val set = hashSetOf(1, 7, 53) val list = arrayListOf(1, 7, 53) val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three") // to는 특별한 키워드가 아니라 일반 함수이다. >> println(set.javaClss) // javaClass는 자바 getClass()와 같다 class java.util.HashSet >> println(list.javaClass) class java.util.ArrayList 코틀린 컬렉션은 자바 컬렉션과 똑같은 클래스다. 하지만 코틀린에서는 자바보다 더 많은 기능을 쓸 수 있다. >> var strings = listOf("first", "secord", "f..
2.4 대상을 이터레이션: while과 for 루프 while 루프는 자바와 동일하므로 패스, for 는 자바의 for-each 루프에 해당하는 형태만 존재 2.4.2 수에 대한 이터레이션: 범위와 수열 코틀린에서는 자바의 for 루프에 해당하는 요소가 없다. 이런 루프의 가장 흔한 용례인 초깃값, 증가 값, 최종 값을 사용한 루프를 대신하기 위해 코틀린에서는 범위(range)를 사용한다. // 범위는 기본적으로 두 값으로 이뤄진 구간이며 .. 연산자로 시작 값과 끝 값을 연결해서 범위를 만든다. val oneToTen = 1..10 fun fizzBuzz(i: Int) = when { i % 15 == 0 -> "FizzBuzz" i % 3 == 0 -> "Fizz " i % 5 == 0 -> "Buz..
2.3 선택 표현과 처리: enum과 when when 은 자바의 switch를 대치하되 훨씬 더 강력하며, 앞으로 더 자주 사용할 프로그래밍 요소이다. 2.3.1 enum 클래스 정의 enum class Color{ RED, ORAGNE, YELLOW, GREEN, BLUE, INDIGO, VIOLET } 코틀린에서 enum은 소프트 키워드(soft keyword)라 부르는 존재다. 반면 class는 키워드다. enum은 특별한 의미를 지니지만 다른 곳에서 사용할 수 있는 반면, class라는 이름은 다른곳에서 사용할 수 없다. 자바의 마찬가지로 enum 클래스 안에도 프로퍼티나 메소드를 정의할 수 있다. enum class Color(val r: Int, val g: Int, val b: Int){ ..
2.2 클래스와 프로퍼티 Java Bean 은 프로퍼티(필드)가 늘어나면 생성자의 본문에서 파라미터를 이름이 같은 필드에 대입하는 대입문의 수도 늘어난다. ex) Peron(String name) public class Person{ private final String name; public Person(String name){ this.name = name; } public String getName(){ return name; } } 코틀린에서는 그런 필드 대입 로직을 훨씬 더 적은 코드로 작성할 수 있다. class Person(val name:String) 이런 유형의 클래스(코드가 없이 데이터만 저장하는 클래스)를 값 객체(value object)라 부르며, 다양한 언어가 값 객체를 간결하게 ..
기본 요소: 함수와 변수 Hello, World! fun main(args:Array){ println("Hello, world!") } 함수를 선언할 때 fun 키워드를 사용 파라미터 이름 뒤에 파라미터의 타입을 쓴다. 함수를 최상위 수준에 정의할 수 있음 (클래스 안에 함수를 넣어야 할 필요가 없다.) 배열도 일반적인 클래스와 마찬가지다. 세미콜론을 붙이지 않는다. 함수 fun max(a: Int, b: Int): Int{ return if (a > b) a else b }fun 함수이름(파라미터 목록) : 함수의 반환 타입 { return 함수본문 } 코틀린 if는 문장이 아니고 결과를 만드는 식(expression)이라는 점이 흥미롭다. 문장(statement)과 식(expression)의 구분 ..
SELECT * FROM TABLE WHERE REPLACE(column_name, ' ', '') = 'val'; 위의 replace 함수를 QueryDsl에서는 어떻게 사용할까? 1번 Expressions.stringTemplate("replace({0},' ','')", column_name) 2번 StringExpression se = StringTemplate.create("replace({0}, ' ', '')", column_name); return select().from(o).where(se.eq('aaa')).list(o);
SQL 에서 '%'같은 특수 문자는 검색이 불가능하다. 예를 들어 WHERE 조건 = '%bb' 를 하게 되면 %bb 와 일치하는 조건을 찾고 싶은거였지만, bb가 마지막에 오는 문자를 검색하게 된다. 이처럼 특수문자가 포함된 문자열은 우리가 의도한바와 다르게 작동할때가 있는데, 이럴때 사용하는 것이 ESCAPE이다. 아래와 같이 사용한다. SELECT PRODUCT_NAME FROM PROUDCT WHERE PRODUCT_NAME LIKE '%#_%' ESCAPE '#'; ESCAPE 문자를 지정한 후에, 특수 문자앞에 ESCAPE문자를 넣어준다. 이렇게 되면 ESCAPE문자 뒤에 있는 문자를 일반 문자로 인식하게되어, _(언더바)가 들어간 상품..
자바가 사용 중인 곳이라면 거의 대부분 코틀린을 활용할 수 있다. 코틀린 맛보기 data class Person(val name:String, val age: Int? = null) // name과 age라는 프로퍼티(property)가 들어간 간단한 데이터 클래스(data class) 정의 fun main(args: Array) { val persons = listOf(Person("성현1"), Person("성현2", age=31)) val oldest = persons.maxBy{ it.age ?: 0} // it 이라는 이름을 사용하면 람다 식의 유일한 인자 사용 가능 // 엘비스 연산자라고 불리는 ?: 는 age가 null인 경우 0을 반환하고, 그렇지 않은 경우 age를 반환 println("..
Dockerfile 이란? 도커 이미지를 만들기 위해서는 Dockerfile이라는 이미지 빌드용 DSL(Domain Specific Language) 파일을 사용한다. 쉽게 말하면 이미지를 만들 때 필요한 설정파일이라고 보면 되겠다. 기본적으로 Dockerfile이라는 이름을 사용하고, 다른 이름을 사용하고 싶을 경우 -f옵션을 준다. Dockerfile 명령어 기본적인 명령어를 살펴보고, 예제를 통해서 더 공부해보자.(참고:https://docs.docker.com/engine/reference/builder/) FROM: 베이스 이미지를 지정한다. 이미지 빌드 시 여기에 지정된 이미지를 내려받는다. RUN: 컨테이너 안에서 실행될 명령어를 정의한다. CMD: 컨테이너 안에서 실행할 프로세스를 지정한다..
깡냉쓰
'분류 전체보기' 카테고리의 글 목록 (18 Page)