Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
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 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

iOS프로그래밍 기초 6주차 강의 정리 본문

1-2/iOS프로그래밍 기초

iOS프로그래밍 기초 6주차 강의 정리

김브래 2022. 10. 11. 00:43

이번주 강의 내용은 무척이나 어려웠다

 

일급객체와 일급시민 이라는 것을 배웠는데

일급객체란 세가지 조건을 만족하는 객체인데

 

첫번째로 변수에 저장할 수 있어야 하고

두번째는 매개변수로 전달 할수 있어야한다.

그리고 세번쨰는 리턴값으로 사용할 수 있어야한다.

그리고 여러가지 예제를 실습했는데 그 다음에 나온 내용이 정말 어려워서 지금도 잘 모르겠다.

클로저 라는 것인데

 

클로저를 이용하면 함수를 변수처럼 사용할 수가 있다.

지금도 잘 모르겠어서 자세히는 못적겠다.

또 함수를 호출할 때 마지막 매개변수가 클로저 라면 후행 클로저를 

이용해서 간략하게 나타낼수 있다.

 

let multiply = {(val1: Int, val2: Int) -> Int  in

        return val1 * val2

}

var result = multiply(10, 20)

print(result)

 

let add = {(val1: Int, val2: Int) -> Int  in

        return val1 + val2

}

result = add(10, 20)

print(result)

 

func math(x: Int, y: Int, cal: (Int, Int) -> Int) -> Int {

    return cal(x, y)

}

result = math(x: 10, y: 20, cal: add)

print(result)

result = math(x: 10, y: 20, cal: multiply)

print(result)

 

 

result = math(x: 10, y: 20, cal: {(val1: Int, val2: Int) -> Int  in

        return val1 + val2

}) //클로저 소스를 매개변수에 직접 작성

print(result)

 

result = math(x: 10, y: 20) {(val1: Int, val2: Int) -> Int  in

        return val1 + val2

}//trailing closure

print(result)

 

result = math(x: 10, y: 20, cal: {(val1: Int, val2: Int)   in

        return val1 + val2

}) //리턴형 생략

print(result)

 

result = math(x: 10, y: 20) {(val1: Int, val2: Int)  in

        return val1 + val2

} //trailing closure, 리턴형 생략

print(result)

 

result = math(x: 10, y: 20, cal: {

        return $0 + $1

}) //매개변수 생략하고 단축인자(shorthand argument name)사용

print(result)

 

result = math(x: 10, y: 20) {

        return $0 + $1

} //trailing closure, 매개변수 생략하고 단축인자사용

print(result)

 

result = math(x: 10, y: 20, cal: {

         $0 + $1

}) //클로저 리턴값이 있으면 마지막 줄을 리턴하므로 return생략

print(result)

 

result = math(x: 10, y: 20) { $0 + $1 } //return 생략

print(result)

 

결과적으로

result = math(x: 10, y: 20, cal: add)

print(result)

이 문장을 후행 클로저를 이용하면

result = math(x: 10, y: 20) { $0 + $1 } 

print(result)

이렇게 줄일 수가 있다.

 

나도 잘 이해가 안되서 나중에 또 봐야겠다.

 

그리고 마지막으로 클래스를 간단히 배우고 끝났다.

 

클래스로 만들어진

객체는 인스턴스 라고 한다.

C++에서 말하는 멤버 변수가 프로퍼티 이고 멤버 함수는 메소드라고 한다.

그리고 클래스를 선언하는 간단한 방법 까지 실습을 하고 끝났다,

클래스를 선언하는 방법은

 

class 클래스 이름 : 부모 클래스 {

// 프로퍼티

// 인스턴스 메서드
// 타입 메서드 (클래스 메서드)

}

이고 자세한건 다음시간에 배운다고 한다.
그래서 자세히는 모르겠다.