TIL(Today I Learned)(44)
-
240521_디모의 코틀린 강의 #17강. 익명객체와 옵저버 패턴
유튜브 - 디모의 코틀린 문법 강의 정리 #17강. 익명객체와 옵저버 패턴 1. 옵저버 패턴: event(키의 입력, 터치 발생, 데이터 수신 등 함수로 직접 요청하지 않았지만 시스템, 루틴에 의해 발생하는 동작)가 발생할 때마다 즉각 처리하게 만드는 프로그래밍 패턴 - 옵저버 패턴에 필요한 2개의 클래스: event 수신 클래스, event 발생/전달 클래스 fun main(){ EventPrinter().start()}interface EventListener{ fun onEvent(count:Int)}class EvetPrinter : EventLister{ override fun onEvent(count:Int){ println("${count} - ") } fun st..
2024.05.20 -
240520_디모의 코틀린 강의 #16강. 오브젝트
유튜브 - 디모의 코틀린 문법 강의 정리 #16강. 오브젝트 1. 오브젝트: 단 하나의 객체만으로 공통적인 속성이나 함수를 사용해야 하는 코드에서 별도의 클래스 없이 object로 대체할 때 사용(인스턴스 생성 X) fun main(){ println(Counter.count) Counter.countUp() Counter.countUp() println(Counter.count) Counter.clear() println(Counter.count) // 0 2 0 출력}// object는 최초 사용 시 자동 생성, 이후에는 코드 전체에서 공통으로 사용// -> 종료 전까지 공통으로 사용할 내용들을 묶어서 만드는 것이 좋음object Counter { var count = 0..
2024.05.20 -
240517_디모의 코틀린 강의 #15. 스코프 함수
fun main(){ var price = 5000 var a = Book("디모", 10000).apply{ name = "[초특가]" + name discount() } a.run{ println("상품명: ${name}, 가격: ${price}원") }} // 결괏값: 상품명: 디모, 가격: 5000원// run이 인스턴스 내 price 속성보다 run이 속한 main함수의 price 변수를 우선시하여// 8000원이 아니라 5000원으로 출력// let 함수로 대체fun main(){ var price = 5000 var a = Book("디모", 10000).apply{ name = "[초특가]" + name ..
2024.05.20 -
240516_디모의 코틀린 강의 #14. 고차함수와 람다함수
유튜브 - 디모의 코틀린 문법 강의 정리 #14강. 고차함수와 람다함수 1. 고차함수: 함수를 클래스에서 생성한 인스턴스처럼 취급하는 방식 fun main() {b(::a) // 함수 b를 호출(함수 a를 고차함수 형태로 파라미터화)}fun a(str:String) { println("$str 함수 a")}fun b(function: (String) -> Unit){ // 고차함수를 파라미터로 받아올 때: (자료형, 자료형...) -> 자료형(반환형) function("b가 호출한")}// 결괏값: b가 호출한 함수 a 2. 람다함수: 고차함수식을 단순화해서 표현fun main() {b(::a) val c:(String) -> Unit = { str:String -> println("$str 람다함수"..
2024.05.20 -
240515_디모의 코틀린 강의 #13강. 변수/함수/클래스의 접근범위와 접근제한자
유튜브 - 디모의 코틀린 문법 강의 정리 #13강. 변수/함수/클래스의 접근 범위와 접근제한자 1. 스코프: 언어 차원에서 변수, 함수, 클래스 등의 멤버들을 서로 공유할 수 있는 범위를 지정해 둔 단위 2. 스코프의 규칙 1) 스코프 외부에서는 스코프 내부의 멤버를 참조연산자로만 참조할 수 있다. ( 예시: a.eat() ) 2) 동일 스코프 내에서는 멤버를 공유할 수 있다. 3) 하위 스코프에서 상위 스코프의 멤버를 재정의할 수 있다. val a = "패키지 스코프"class B { fun print(){ println(a) }}fun main(){ println(a) B.print()}// "패키지 스코프" 2번 출력 ==> 변수 a는 클래스 B나 main 함수에 속해있지 않지..
2024.05.14 -
240514_디모의 코틀린 강의 #12강. 기본 프로젝트 구조
유튜브 - 디모의 코틀린 문법 강의 정리 #12강. 기본 프로젝트 구조 1. 프로젝트: 어플의 모든 내용을 담는 틀2. 모듈: 프로젝트를 구성하는 큰 단위 (파일, 폴더, 설정, 리소스 등)3. 패키지: 어플 개발 시 소스코드의 소속을 지정하기 위한 논리적 단위 * 일반적 패키지명: 도메인거꾸로.프로젝트명.기능(예시: com.youtube.dimo.base) 4. 코드 파일을 패키지에 넣는 법: 코드 맨 위에 package "패키지명" 작성 * 작성하지 않는 경우 자동으로 default 패키지로 묶임) * 같은 패키지 내에서는 변수, 함수, 클래스를 사용 가능 * 다른 패키지 내에서는 import가 필요함(import + "외부 패키지명")
2024.05.14