브래의 슬기로운 코딩 생활
iOS프로그래밍 기초 6주차 강의 정리 본문
이번주 강의 내용은 무척이나 어려웠다
일급객체와 일급시민 이라는 것을 배웠는데
일급객체란 세가지 조건을 만족하는 객체인데
첫번째로 변수에 저장할 수 있어야 하고
두번째는 매개변수로 전달 할수 있어야한다.
그리고 세번쨰는 리턴값으로 사용할 수 있어야한다.
그리고 여러가지 예제를 실습했는데 그 다음에 나온 내용이 정말 어려워서 지금도 잘 모르겠다.
클로저 라는 것인데
클로저를 이용하면 함수를 변수처럼 사용할 수가 있다.
지금도 잘 모르겠어서 자세히는 못적겠다.
또 함수를 호출할 때 마지막 매개변수가 클로저 라면 후행 클로저를
이용해서 간략하게 나타낼수 있다.
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 클래스 이름 : 부모 클래스 {
// 프로퍼티
// 인스턴스 메서드
// 타입 메서드 (클래스 메서드)
}
'1-2 > iOS프로그래밍 기초' 카테고리의 다른 글
iOS프로그래밍기초 8주차 중간고사 정리 (0) | 2022.10.24 |
---|---|
iOS프로그래밍 기초 7주차 정리 (0) | 2022.10.17 |
iOS프로그래밍 기초 5주차 동영상 강의 정리 (2) | 2022.10.02 |
iOS프로그래밍기초 4주차 정리 (0) | 2022.09.26 |
iOS프로그래밍 기초 3주차 정리 (0) | 2022.09.19 |