전체 글
-
[Kotlin] ObjectKotlin 2024. 3. 12. 23:06
Object object는 인스턴스를 생성하지 않고 그 자체로 객체이기 떄문에 생성자는 사용하지 않는다 object로 생성된 객체는 최초 사용 시 자동으로 생성되며 이후에는 코드 전체에서 공용으로 사용될 수 있으며 프로그램이 종료되기 전까지 공통적으로 사용할 내용들을 묶어 만드는 것이 좋다. fun main() { println(Counter.count) Counter.countUp() Counter.countUp() println(Counter.count) Counter.clear() println(Counter.count) } object Counter{ var count = 0 fun countUp(){ count++ } fun clear(){ count = 0 } } Compaion Object ..
-
[Kotlin] 스코프 함수Kotlin 2024. 3. 12. 21:34
소코프 함수 함수형 언어의 특징을 좀더 편리하게 사용할 수 있도록 기본 제공하는 함수 apply 인스턴스를 생성한 후 변수에 담기 전에 초기화 할 때 사용 인스턴스를 생성하자마자 그 인스턴스에 참조연산자를 사용하여 apply 를 붙이고 중괄호로 람다 함수를 하나만들어 apply 의 scope 안에서 직접 인스턴스 속성과 함수를 참조 연산자 없이 사용이 가능하다 또한 apply 는 인스턴스 자신을 다시 반환하므로 이렇게 생성되자마자 조작된 인스턴스를 변수에 바로 넣어줄 수 있다. 이렇게 apply 를 이용하면 main 함수와 별도의 scope 에서 인스턴스의 변수와 함수를 조작하므로 코드가 깔끔해진다는 장점이 있다 fun main() { //apply : 인스턴스를 생성하자마자 그 인스턴스에 참조연산자를 ..
-
[Kotlin] 고차함수와 람다함수Kotlin 2024. 3. 12. 21:05
고차함수 함수를 마치 클래스에 만들어 낸 인스턴스처럼 취급해주는 방법이다 함수를 마라미터롤 넘겨 줄 수도 있고 결과값으로 반화 받을 수도 있는 방법이다 코틀린에서는 모든 함수를 고차함수로 사용 가능하다 fun a(str:String){ println("$str 함수 a") } // unit : 값이 없다는 형식 fun b(function:(String)->Unit){ function("b가 호출한") } fun main(){ b(::a) //고차 함수형태로 넘기려면 함수 이름앞에 콜론 :: 두개를 붙여준다 } 람다함수 람다 함수 자체가 고차함수이다 // unit : 값이 없다는 형식 fun b(function:(String)->Unit){ function("b가 호출한") } fun main(){ val..
-
[Kotlin] 변수, 함수, 클래스의 접근범위와 접근제한자Kotlin 2024. 3. 12. 19:06
scope란?? 말 그대로 범위라는 뜻으로 변수나 함수 클래스 같은 멤버들을 서로 공유하여 사용할 수 있는 범위를 지정해둔 단위이다 패키지안의 변수 함수 클래스는 하나의 스코프이고 함수 클래스 안에 있는 변수 함수는 또 다른 하위 스코프가 됩니다 3가지 규칙 1. 스코프 외부에서는 스코프 내부의 멤버를 참조 연산자로만 참조가 가능하다 - import 또는 a.eat() 의 . 부분 2. var a = "패키지 스코프" class B{ fun print(){ println(a) } } fun main() { println(a) B().print() } 이 코드를 실행해 보면 변수 a는 클래스 B 나 main 함수에 속해 있지는 않지만 동일한 스코프 내에서 변수를 공유하여 사용할 수 있는 것을 볼 수있다. ..