티스토리 뷰

지난 스터디에 각자 공부한 내용을 바탕으로 만들어온 문제를 정리한다!


Q1.

 jin, won, chan, sion 항목으로 가진 리스트를 만들고, map 함수를 이용하여 다음과 같이 출력하세요.

친구의 이름 -> JIN

친구의 이름 -> WON

친구의 이름 -> CHAN

친구의 이름 -> SION

A1.

val friends = listOf("jin", "won", "chan", "sion")
friends.map{ friend -> "친구의 이름 -> " + friend.toUpperCase() }.forEach{ println(it) }

 

Q2.

getNum(a = true,
   	success = { //a가 true일 때 실행
    		print(it) 
    	},
   	fail = { //a가 false일 때 실행
    		print(it) 
    	})

위 코드는 getNum함수를 실행하는 코드이다. a가 true이면 success를 실행하고 false이면 fail을 실행하며 두 함수의 반환값은 없다.

success 실행 시 1을 출력하고, fail 실행 시 "실패입니다"를 출력하는 getNum함수를 구현하시오.

A2.

fun getNum(a: Boolean, success: (Int) -> Unit, fail: (String) -> Unit){ //매개변수로 함수를 받음
    if(a){
        success(1) //출력할 값을 매개변수로 보내 it으로 접근이 가능하도록 함
    }else{
        fail("실패입니다") //출력할 값을 매개변수로 보내 it으로 접근이 가능하도록 함
    }
}

 

Q3.

Developer 클래스의 객체를 만드려고 한다. Developer는 language 와 team이라는 프로퍼티를 가지고 있으며, 

"나는 [language]을 사용하는 [team]의 클라이언트 개발자입니다."라는 결과를 출력하는 함수를 가지고 있다.

(1) clientDeveloper라는 Developer 클래스 타입의 객체를 생성하자마자 language는 Kotlin, team은 EarlyBuddy로 설정한 후 출력 함수를 실행하시오.

(2) 위에서 만든 clientDeveloper 인스턴스로 "나는 swift를 사용하는 sopt의 클라이언트 개발자입니다"를 출력하시오.

A3.

class Developer{
    var language: String = ""
    var team: String = ""
    fun printInfo(){
        println("나는 [$language]을 사용하는 [$team]의 클라이언트 개발자입니다")
    }
}

val clientDeveloper = Developer().apply { //값 생성과 초기화를 동시에 할 때는 apply를 쓰는 것이 좋음
	language = "kotlin"
        team = "EarlyBuddy"
        printInfo()
    }

clientDeveloper.run { // 값만 변경할 때는 run을 쓰는 것이 좋음
        language = "Swift"
        team = "SOPT"
        printInfo()
}

 

Q4.

val list = listOf(1, 2, 3, 4)
listInt.toStringList {
	true
}
//1 2 3 4 출력

val listString = listOf("AA", "BB", "CC", "DD")
listString.toStringList {
	true
}
//AA BB CC DD 출력

toStringList는 확장함수이며 호출시 타입이 정해진다. 함수 선언부를 작성해라

A4.

fun <T> List<T>.toStringList(inThisArray: (T) -> Boolean){
	...
}

 

Q5.

AutoCompleteTextView(자동완성 텍스트뷰)에 onChange라는 확장함수를 달려고 한다. onChange 확장함수가 하는 일은 해당 자동완성 텍스트뷰의 내용이 바뀔 때 마다 서버에 그 내용을 보내서 값을 불러오는 통신을 하는 것이다. 

 

확장 함수를 작성하는 순서는 다음과 같다.

  1. AutoCompleteTextView에 addChangedListener 메소드로 리스너를 단다.
  2. 이 리스너는 TextWatcher 인터페이스의 인스턴스이다.
  3. TextWatcher 인터페이스는 반드시 구현해야 하는 함수 3개를 가진다.
  4. 통신 함수의 이름은 search()이며 이 함수의 파라미터에 검색할 내용을 넣으면 된다.

A5.

fun AutoCompleteTextView.onChange(){ //확장함수

    this.addTextChangedListener(object : TextWatcher{
        override fun onTextChanged(s: CharSequence?, p1: Int, p2: Int, p3: Int) {
        	search(s) //text가 바뀔 때마다 검색하는 함수 호출
        }

        override fun beforeTextChanged(s: CharSequence?, p1: Int, p2: Int, p3: Int) {
            ...
        }

        override fun afterTextChanged(s: Editable?){
        	...
        }
    })
}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함