본문 바로가기
반응형

Kotlin8

3차원 회전행렬 구하기 및 캘리브레이션 가속도 센서를 캘리브레이션 할 일이 생겨서 만들어 보았다. 지피티는 신이다. 아래 함수들 전부 검증해보고 제대로 동작하는 것 확인하였다. data class Vector3D(val x: Double, val y: Double, val z: Double) fun normalize(vector: Vector3D): Vector3D { val length = sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z) return Vector3D(vector.x / length, vector.y / length, vector.z / length) } fun dotProduct(vector1: Vector3D, vector2: Vector3D): .. 2024. 1. 26.
[코틀린] 괄호가 없는 함수 코틀린을 공부하다보면 간혹가다가 괄호가 없고 바로 중괄호부터 시작하는 함수들이 있다. 가령 예를들면 코루틴의 initializer 같은 함수가 대표적인 예시이다. 이런 함수는 어떻게 만드는 것일까? 결론부터 말하면, 함수가 하나의 람다함수만 인풋으로 받을 경우 괄호()를 생략할 수 있다. 코틀린 공식문서에는 다음과 같이 적혀있다. If a call takes a single lambda, it should be passed outside of parentheses whenever possible. https://kotlinlang.org/docs/coding-conventions.html#lambdas 인풋으로 람다함수 하나만 받는다면 가능하면 괄호 밖으로 람다함수를 꺼내는게 좋다 라는 얘기 아래는 대표.. 2022. 1. 4.
[코틀린] 람다표현식과 익명함수 차이 보통 다른언어에서 람다함수, 람다표현식, 익명함수는 대부분 같은개념으로 사용된다. 하지만 코틀린에서는 람다표현식과 익명함수의 개념을 명확히 구분한다. The lambda expression syntax above is missing one thing – the ability to specify the function’s return type. In most cases, this is unnecessary because the return type can be inferred automatically. However, if you do need to specify it explicitly, you can use an alternative syntax: an anonymous function. 즉 람다표현식.. 2021. 12. 30.
[코틀린 용어] 클로저 의미, closure 코틀린의 람다함수를 공부하다 보면 클로저라는 단어가 나온다. 이게 무슨뜻일가 클로저의 뜻은 다음과 같다 내부함수에서 외부함수의 데이터를 사용할 경우, 외부함수의 코드불럭이 끝나도 내부함수에서 참조하는 변수는 계속 살아남아 있는 현상 fun main() { fun outer(): () -> Int{ var x = 10 var innerFunc = fun():Int{ return println(++x) } return innerFunc } val func1 = outer() func1() // 결과: 11 func1() // 무슨값이 나올지 한번 맞춰보세요! } 첫번째 func1() 호출에서는 결과값이 11이 나옵니다. 외부함수의 변수 x의 값은 10이였고 이를 ++ 해주었으니 11이 나오는것은 당연하겠지요.. 2021. 12. 30.
[코틀린 용어] higher order function, function literal, 고차함수, 함수 리터럴 1. 고차함수, Higher Order Function 코틀린의 람다표현식을 공부하다 보면 위 용어 higher-order function, 고차함수 라는 용어를 많이 보게된다. 이거의 뜻은 다음과 같다 1. 함수를 input으로 받는 함수 2. 혹은 함수자체를 리턴해주는 함수 그럼 왜 이놈이 람다표현식 얘기할때 자주나오는가? 주로 저 input값을 줄때나 return으로 함수를 해 줄때 람다표현식을 자주 사용하기 때문이다. 2. 함수 리터럴, function literal 람다표현식을 공부하다 보면 위 얘기도 많이 보게 된다. 먼저 리터럴에 대한 정의부터 보자 위키피디아에 설명은 아래와 같이 되어있다. In computer science, a literal is a notation for represe.. 2021. 12. 29.
[코틀린] 리시버가있는 함수 리터럴, Function literals with receiver 공식문서 설명에 진짜 뭐같이 나와있어서 이해하기 참 힘든 부분이다. 진짜 안드로이드 진영은 초등학생도 이해하기 쉽도록 설명할 노력은 하나도 없는 모습이 참 밉상이다. 이 망할 Function literals with receiver 라는놈을 이해하고 싶은 분들을 위해 이 글을 바친다. 먼저 리터럴이라는 개념부터 이해하고 가자. 위키피디아에 설명은 아래와 같이 되어있다. In computer science, a literal is a notation for representing a fixed value in source code https://en.wikipedia.org/wiki/Literal_(computer_programming) 아니 그래서 이게 뭔말인디요? 자 우리가 변수를 선언하고 값을 넣는다.. 2021. 12. 29.
코루틴 배우기 https://kotlinlang.org/docs/coroutines-guide.html Coroutines guide | Kotlin kotlinlang.org 코루틴 소개 코루틴은 간단히 설명하면 경량화된 스레드 + 다른언어의 async 키워드의 조합이라 생각하면 편하다. 하지만 차이점은 상당히 많다는 점을 기억! 코루틴은 kotlinx.corutines 라이브러리에 담겨있다. 코루틴의 정의 A coroutine is an instance of suspendable computation. It is conceptually similar to a thread, in the sense that it takes a block of code to run that works concurrently with t.. 2021. 12. 29.
[코틀린] 클래스 생성자의 이해 https://kotlinlang.org/docs/classes.html Classes | Kotlin kotlinlang.org 상기 주소 내용을 기반으로 작성합니다. 1. 클래스의 구성 코틀린의 클래스는 크게 3가지 항목으로 구분되어있다. 클래스 네임 : 클래스의 이름 정의 클래스 헤더 : 변수의 형태 정의, 주생성자 및 다른 것 포함 클래스 바디 : 중괄호{} 안에 있는 작업들 헤더와 바디는 optional이다. 바디가 없으면 {} 중괄호 생략이 가능하다. 2. 생성자 코틀린은 하나의 주 생성자와 하나 이상의 부 생성자를 가질 수 있다. 주 생성자 주 생성자는 클래스 네임 바로 뒤에 오며 optional type parameter를 가집니다. class Person constructor(firstN.. 2021. 7. 20.
반응형