4월 15일 (금)
TIL (Today I Learned)
4월 15일 (금)
학습 내용
함수 naming: 동사로 짓는다.
변수 naming: 명사로 짓는다.
-
코드는 계속 변해야 되는 것 (고객의 요구사항은 변하고 그것에 대응해야된다.)
-> 코드는 유연해야 된다. 수정하기 쉬워야한다.
-> 기능별로 나누어서 코딩한다. -
등이연산자
비교연산자 중 등이연산자 '=='는 비교하는 두 값을 옵셔널 값으로 변환한 후 계산한다.
== (lhs: String?, rhs: String?) -> Bool {
return lhs == rhs
}
- 옵셔널
옵셔널 추출 방법
-
- 강제추출 방식
- 말 그대로 강제적으로 optional unwrapping
값의 존재유무는 신경쓰지 않고 값을 추출한다
따라서 nil 상태인 경우 error 발생
추출하고자 하는 값 오른쪽에 ! 붙여주면 된다
- 강제추출 방식
-
- 옵셔널 체이닝
- 연쇄적으로 옵셔널 값을 추출한다는 의미
반환값은 옵셔널의 타입
.을 이용해 내부 프로퍼티나 메서드에 연속적으로 접근할때,
옵셔널 값이 하나라도 있으면 체이닝
ex)person.contacts?.address
person?.contacts?.address
방식은 옵셔널의 표현식의 멤버에 접근할때 표현식이 nil일 가능성이 존재하니 ?를 써준다
옵셔널의 체이닝의 결과값의 타입은 마지막 표현식의 옵셔널 타입
ex.) let email = ilim?.contacts.email 이라는 코드가 있다면
optional(email.type)이 상수에 저장됨
옵셔널 체이닝의 반환값은 무조건 옵셔널 타입
옵셔널 체이닝의 마지막 표현식은 그 타입에 관계없이 ? 생략
만약 추가적으로 속성에 접근한다면 마지막 표현식이 아니므로 그때는 ?를 써줘야 한다
옵셔널 체이닝 중간에 nil이 있으면 그 다음 표현식은 접근 하지 않고 바로 nil 리턴
- 옵셔널 체이닝
-
- 옵셔널 바인딩
- 조건문과 변수, 상수를 이용하여 옵셔널 값을 상수에 할당하는 방식이다.
- 무조건 조건문을 이용해야한다.
let optionalBindingTest: Int? = 2
if let bindingTest = optionalBindingTest {
print(bindingTest)
} else {
print("값이 없어요")
} // 2
- 묵시적 해제
- 타입 선언시 ? 대신 !를 사용해 선언하면 컴파일러가 옵셔널을 해제한다.
- 실제 사용시 nil이 대입 될 가능성이 없는 변수에만 사용한다.
var value: Int! = Int("123")
print(value) // Optional(123)
print(value + 1) // 124
문제점 / 고민한 점
Substring -> String으로 변환하기
Author And Source
이 문제에 관하여(4월 15일 (금)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@apwierk2451/4월-15일-금저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)