Client/Android

코틀린 퀴즈 -2 제네릭, 주생성자, 확장함수, 익명함수, 엘비스 연산자

aonee 2020. 3. 12. 03:24

🔥 Problem 1

프로퍼티 1) dest 변수. 타입은 변경가능한 리스트.  write 만 가능하다.

프로퍼티 2) src 변수. 타입은 변경 불가능한 리스트. read만 가능하다.

src로 받은 목록을 dest에 추가하는 append 제네릭 함수를 작성하라

open class Car { ... }
class sedan : Car() { ... }
class truck : Car() { ... }
val sedans : List<sedan> = ...
val trucks : List<truck> = ...
val cars : MutableList<Car> = ...

append(cars, sedans)
append(cars, trucks)

 

🔥 Problem 2

여기서 에러가 나는 코드는? (총 4줄)

val name : String
val address : String  = null

val nullableString : String?
val nonNullableString : String = "Foo"


fun Address (a : String, b : String?, c : String) : String {...}
fun Code (a : String) : PostalCode ? { ... }

Address (null, null, "hello")
val postal :PostalCode = Code("adsf adf f f f  f")

 

🔥 Problem 3

Happy 타입이며 한 번 할당되면 값을 변경하지 못하는 smile 변수가 있다.

해당 변수에 findHappy("Let's have a laugh") findHappy함수 결과를 대입하려한다.

그런데 findHappy함수가 널 값을 반환하는 경우 Happy.None값을대입하는코드를 작성하라

 

 

🔥 Problem 4

Employee 라는 주생성자를 만든다. 

프로퍼티가 두개가 있는데 하나는 String 타입이고 이름은 name, 하나는 널값이 될 수 있는 Employee 타입이고 이름은 manager 이다. 
managerName 의 함수를 만드는데 이 함수는 Employee를 파라미터 값으로 갖고 반환값은 

해당 Employee의 manager의 name 이다. ( 확장함수 이용 ) -찬영

 

 

🔥 Problem 5

시연

 

 

 

🔥 Problem 6

EditText의 값을 Float 형태로 만들 때는 EditText.text.toString().toFloat()이라는 긴 코드를 통해 만들 수 있다. 
하지만, 여러개의 EditText를 모두 Float 형태로 만들 때 쟤네들을 일일히 다 호출해주는 것은 불편하다. 
이를 해결하여라. -시연

 

 

 

🔥 Problem 7

시연

 

 

 

 

 

🍀 Solution 1

fun <T> append (dest : MutableList<in T>, src : List<out T>){
	dest.addAll(src)
}

 

🍀 Solution 2

1, 2 , 7, 8 줄 ERROR Code

 

val name : String

=> nonNullable. 즉, 초기화 해줘야 한다. val address : String = null

=> nonNullable. null을 대입할 수 없고 값을 대입해야한다.

Address (null, null, "hello")

=> 첫 번째 인자는 null 허용을 안했는데 null을 대입해서 오류 val postal : PostalCode = Code("adsf adf f f f f")

=> Code함수의 return 값이 nullable이다. 즉, null일 수 있다. 그렇다면 postal변수의 값도 nullable이여야 한다.

그러나 nonNuallable이기 때문에 불가능하다.

 

 

🍀 Solution 3

val smile : Happy = findHappy("Let's have a laugh") ?: Happy.None

 

🍀 Solution 4

 

🍀 Solution 5

 

 

🍀 Solution 6

fun EditText.convertFloat() {  
	this.text.toString().toFloat() 
}

 

 

🍀 Solution 7

 

반응형