상세 컨텐츠

본문 제목

[Android] Kotlin - Parameter Lambda Function

Programming

by Crape Myrtle 2024. 11. 15. 10:53

본문

람다로 표현한 함수를 인자값을 사용하는 것이다.

개인적으로 가장 아름다운 코드라고 생각한다.

 

먼저 예시를 보여주면서 작성하는 방법을 간략히 기록한다.

val response = WebLoginHelperExtension.request(
    requestUrl = serverUrl,
    params = loginParams,
    method = "POST"
) { connection: URLConnection ->

 

WebLoginHelperExtension.request함수에 connection은 함수로 된 인자이다.

request함수 내부에서 connection함수가 실행되면 호출한 부분에서 해당 인자값을 가지고 실행하게 된다.

 

정말 아름답고 부드러운 표현이라고 생각이든다.

 

request함수는 다음과 같다.

fun request(
    requestUrl: String,
    params: Map<String, String>? = null,
    method: String = "GET",
    connect:((URLConnection) -> Unit)? = null
): String {

 

URLConnection타입을 반환한다.

직접 안드로이드에서 RestAPI통신을 하기위해서 만든 작업이다.

 

connect인자는 블럭 내에서 다음과 같이 처리한다.

val url: URL = URL(requestUrl)
val connection =
    if (requestUrl.contains("https")) url.openConnection() as HttpsURLConnection
    else url.openConnection() as HttpURLConnection

connect?.let { it(connection) }

 

 

프로토콜이 http, https인지에 따라서 dynamic하게 connection인스턴스를 생성한다.

통신처리 이후 connect함수에 connection인스턴스를 전달한다.

관련글 더보기