람다로 표현한 함수를 인자값을 사용하는 것이다.
개인적으로 가장 아름다운 코드라고 생각한다.
먼저 예시를 보여주면서 작성하는 방법을 간략히 기록한다.
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인스턴스를 전달한다.
[Game] 신문지 스도쿠(두뇌향상) 스마트폰, 모바일 게임 - 신문지에 있던 스도쿠를 풀어보셨나요? #추억 #신문지 #스도쿠 #Sudoku #MagazineSudoku (8) | 2024.11.29 |
---|---|
[Flutter] 네이버 로그인 방법(NaverLogin) #NaverLoginSDK #naver_login_sdk #네이버로그인패키지 (2) | 2024.11.27 |
[Android] Permission Setting(권한 설정) (2) | 2024.11.19 |
[Flutter] Mac : Flutter SDK Path설정 #경로설정 #환경설정 (0) | 2024.10.29 |
[iOS] WKWebView WebView response:URL값 가져오기 (12) | 2024.10.28 |