본문 바로가기

내일배움캠프

본 캠프 18일차 - let,filter,fold

.let {}

 var selectFood = selectMenu(selectNumber)
        selectFood?.let{ food -> addOrder(food)}

과제에 들어갔던 문장인데 food를 addOrder(food)로 나타내는 문장이다. 일단 어떠한 자료형이든 사용할 수 있도록 해주는 형식이라고 한다. Int, String, 각종 class의 객체 등이 확장함수로 사용 가능하다고 한다.

 

Filter

if (categoryName != "Order" && categoryName != "Cancel") {
        var foodCategory = food.filter { it.category == categoryName }
        displayDetailMenu(categoryName)

필터는 리스트에 걸려있는 조건이나 수식을 알아보기 쉽게 원하는 값만 뽑아 쓸 수 있게 해준다. 과제에 들어갔던 문장인데 저기서 food는 food의 리스트이다. 그리고 여기서 filter를 써서 중괄호 열고 그안에 it으로 줄여준다. 그 후 food의 생성자 category를 호출하고 이것과 같은것을 categoryName이고 이걸 호출하는 형태이다.

 

Fold

        val totalOrderPrice = orders.fold(0.0) {order1, order2 ->
            order1 + order2.food.price

 

폴드는 컬렉션 내에 있는 모든 데이터를 모으는 것이고, 초기값을 지정한다. 따라서 저기에서는 orders의 초기값을 0.0으로 지정한 것이다.

 

 

오늘은 전 챕터나 과제를 하지 않고 이번 주차 강의 듣기를 시작했다. 다만 따라하기 위해 안드로이드스튜디오를 같이 켜서 했는데 오류도 뜨고 에뮬레이터 다운받는게 좀 느렸다...아무튼 내일까지 모든 강의를 듣고 다음 주까지 낼 개인 과제도 시작해봐야겠다.