북극곰의 개발일기

Kotlin Korea 2018 Meetup with hadi Hariri





posted by purplebeen on Sat Jul 07 2018 19:45:59 GMT+0900 (KST) in Kotlin


함수형 개발

단순한 함수 뿐만 아니라 고차원 함수를 다루는 데에서도 유용한 기능을 제공함

fun printIt (value : String) :{
	
}

fun main(args : ArrayList<String>) {
	var p = printIt("fdfd")
	print(p)
}

p를 출력할경우 Unit이 나옴

Kotlin에서는 Anonymous Function이 기본적으로 제공됨,
Standard Library에서 조금 더 쉽게 적용할 수 있는 여러 고차원 함수를 제공함

Exception을 사용하는 것은 문제가 없다.

DSL

DSL은 아주 작게 구현이 가능하다.

class Course(var title : String = "", var description : String = "", var instructor : Instructor = Instructor()) 
class Instructor(var name : String, var email : String)

fun main(args : Array<String>) {
	val course = Course()
	with(course) {
		title = "kotlin"
		description = "sandwich"
		instructor {
			name = "Me"
			email = "me@me.com"
		}
	}
}
class Course(var title , var description : String , var instructor : Instructor) 
class Instructor(var name : String, var email : String) {
	override invoke (function : Instructor.() -> Unit) {
	}
}



class CourseBuileder {
	var title : String = ""
	var description : String = ""
	var instructor : Instructor = Instructor("","")
	fun build() = Course(title, description, instructor)
}
fun course(f : CourseBuilder.() -> Unit)  = CourseBuilder.apply(f).build()

fun main(args : Array<String>) {
	val course = Course()
	course {
		title = "kotlin"
		description = "sandwich"
		instructor {
			name = "Me"
			email = "me@me.com"
		}
	}
}

코틀린 맛 빌드 스크립트

Kotlin 맛 Gradle

Kotlin

  • 빌드스크립트 / 플러그인/ 안드로이드 일원화
  • 강력한 정적 타입의 프로그래밍 언어
  • 자동완성

Gradle Plugin을 코틀린을로 만들기

만드는 방법

  • build.gradle (groovy 영역이니 논외로)
  • buildSrc 프로젝트
  • 독립적인 (Standalone) 프로젝트

1 buildSrc 프로젝트

$rootProject/buildSrc/

  • 플러그인 코드를 작성하면
    • 빌드스크립트 classpath에 포함되어
    • 메인 / 서브 모듈들의 빌드스크립트에서 사용 가능
  • 공유 불가
    • 메인 모듈을 벗어나면 쓸 수 없음

2 독립적인(Standalone) 프로젝트

  • 약간의 설정이 더 필요
  • 공유 가능 (http://plugins.gradle.org)

개발환경

Dependency Version
Android Studio 3.1.3
Android Gradle Plugin 3.2.0-beta01
Gradle Wrapper 4.7

http://github.com/importre