전체 글 411

Wiki에서 kotlin-playground 사용하기

Wiki에서 kotlin-playground 를 이용해 소스를 넣고 접기/펼치기를 사용 하려고 한다. 다른 매크로 선택하여 HTML을 입력 코드에 추가하면 접기/펼치기 가능 접기/펼치기 👈 아래에 kotlin-playground 소스를 넣으면 소스처럼 보인다! @Composable fun ShortColoredTextDemo( text: String = "", color: Color = Color.Black ) = Text( text = text, style = TextStyle(color = color) )

코틀린(Kotlin) - 고차함수 흐름제어 forEach

forEach에서 return시 원하는 동작대로 되지 않아 작성하였습니다. 람다 안에서 return시 어떻게 되는지 살펴보자. 람다 안의 return문 : 람다를 둘러싼 함수로부터 반환 람다 안에서 return을 사용하면 람다뿐만 아니라 그 람다를 호출하는 함수의 실행을 끝내고 반환됩니다. 자기 자신을 둘러싸고 있는 블록보다 더 바깥에 있는 블록을 반환하는 return 문을 넌로컬(non-local) return 이라고 부릅니다. -> onClick함수가 끝난다. return이 바깥쪽 함수를 반환시킬 수 있는 경우는 람다를 인자로 받는 함수가 인라인 함수인 경우뿐입니다. 인라이닝 되지 않는 함수에 전달되는 람다 안에서는 return을 사용할 수 없다. -> 람다를 변수에 저장하거나 바깥쪽 함수를 반환한 ..

코틀린 & Java 2023.07.25

WebView zoom in/out 안될 경우

안드로이드 웹뷰 줌 in/out 안되는 경우 웹뷰에 로드된 html 소스를 까보면 안에 요런 식으로 설정이 되어 있음. user-scalable=no 이놈이 문제인데, user-scalable=yes로 해도 100% 해결은 되지 않는다고 함! [Android] 아래 설정들을 webView 객체에 추가하면 보통 해결. webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setSupportZoom(true); webView.getSettings().s..

안드로이드 2023.06.14

맥에서 크롬이 열리지 않을 때

Mac에서 크롬 실행 안될 때 새로운 맥을 받고 크롬을 설치했는데, 맥에서 크롬이 열리지 않는다! 해결 방법 1. 터미널 창을 연다. 런치패드 > 기타 > 터미널 2. 크롬 로컬 데이터 폴더를 삭제 터미널에 명령어 입력 후 실행 sudo rm -rf ~/Library/Application\ Support/Google/Chrome 3. 크롬 로컬 데이터 폴더를 수동으로 만듬 cd ~/Library/Application\ Support/Google sudo mkdir Chrome 4. 폴더에 쓰기 권한을 준다. sudo chmod a+w Chrome 5. 크롬 다시 실행 저는 이 방법으로 해결 하였습니다!! 참조 : https://velog.io/@jinuku/%EB%A7%A5%EC%97%90%EC%84%9..

개발설정 2023.05.24

인라인 함수: 람다의 부가 비용 없애기

인라인 함수: 람다의 부가 비용 없애기 람다가 변수를 포획하면 람다가 생성되는 시점마다 새로운 무명 클래스 객체가 생긴다. 이런경우, 실행 시점에 무명 클래스 생성에 따른 부가 비용이 든다. → 똑같은 작업을 수행하는 일반 함수를 사용한 구현보다 덜 효율적 inline 변경자 컴파일러는 그 함수를 호출하는 모든 문장을 함수 본문에 해당하는 바이트 코드로 바꿔치기 해준다. 작동 방식 함수를 호출하는 코드를 함수를 호출하는 바이트코드 대신에 함수 본문을 번역한 바이트 코드로 컴파일한다. [Kotlin in Action 책] p.365 8.13~8.3 synchronized 함수의 본문뿐 아니라 전달된 람다의 본문도 함께 인라이닝 된다. 함수 타입의 변수를 넘길수도 있다. fun runUnderLock(bod..

고차 함수 정의

고차 함수 (High order function) 다른 함수를 인자로 받거나 함수를 반환하는 함수 함수 타입 val sum: (Int, Int) -> Int = { x, y -> x+y } val action: () -> Unit = { println(42) } 함수 타입을 정의하려면 함수 파라미터의 타입을 괄호 안에 넣고, 그뒤에 화살표(→)를 추가한 다음, 반환 타입을 지정하면 된다. 함수타입을 선언할 때는 반환 타입으로 반드시 명시해야 하므로 Unit을 빼먹어서는 안 된다. 반환 타입이 널이 될 수 있는 타입 var canReturnNull: (Int, Int) -> Int? = {x, y -> null} 함수 타입 전체가 널이 될 수 있는 타입 var funOrNull: ((Int, Int) ->..