Swift 새 기능 모듈 (Tuple) 과 키워드 inout

2791 단어
머리말
최근 swift 의 개발 tips 를 보고 있 습 니 다. 그 중 하 나 는 다 중 그룹 입 니 다. 제 가 이해 하 는 다 중 그룹의 사용 과 키워드 inout 에 대한 이 해 를 공유 하려 고 합 니 다.
원 그룹의 정의
원본 그룹 은 Objective - C 에 없 는 데이터 구조 로 배열 과 유사 하 며 모두 한 그룹의 데 이 터 를 나타 내 는 집합 입 니 다.배열 과 유사 하지만 차이 점도 있다. 원 그룹의 길 이 는 임 의적 이 고 원 그룹의 데 이 터 는 서로 다른 데이터 형식 일 수 있다.원 그룹의 정 의 는 매우 간단 합 니 다. 작은 괄호 로 묶 고 안의 요 소 는 쉼표 로 구분 합 니 다. 예 를 들 어:
let user = ("   " ,true, 22)

원조 의 기본 용법
1. 색인 으로 접근 가능
let user = ("   " ,true, 22)
print(user.0)//   

2. 원 조 를 분해 한 다음 에 사용 할 수 있다.
let (name,isFemale,age) = user
print(name)//   

3. 일부분 의 값 만 필요 하 다 면 다른 부분 을 무시 하 는 대신 '' 로 대체 할 수 있 습 니 다.
let (name,_,_) = user
print(name)//   

4. 위의 사용 은 약간 번 거 로 워 보이 지만 간단 한 방식 은 정 의 를 내 릴 때 모든 요소 에 따로 이름 을 짓 는 것 이다.
let user = (name:"   ",isFemale:true,age:22)
print(user.name)//   
print(user.0)//   

역할
함 수 를 설명 할 때 매개 변수 앞에서 inout 으로 수식 하여 함수 내부 에서 외부 매개 변 수 를 변경 합 니 다.몇 가 지 를 주의해 야 합 니 다. 1. 변수 만 들 어 갈 수 있 고 상수 와 글자 의 양 이 들 어 갈 수 없습니다. 들 어 올 때 변수 이름 앞에서 & 기호 로 3. inout 수식 하 는 매개 변 수 는 기본 값 이 있 으 면 안 됩 니 다. 범위 가 있 는 매개 변수 집합 도 수식 되 지 않 습 니 다. 4. 하나의 매개 변 수 는 1 단 에 inout 에 의 해 수식 되 지 않 습 니 다.더 이상 var 와 let 에 의 해 Swift 에서 inout 매개 변수 앞에서 사용 하 는 & 기 호 를 수식 할 수 없습니다. 이것 은 인용 을 전달 하 는 인상 을 줄 수 있 습 니 다. 그러나 사실은 그렇지 않 습 니 다. 공식 적 인 말 을 인용 하면:
inout 매개 변 수 는 함수 에 값 을 전달 합 니 다. 함 수 는 이 값 을 바 꾼 다음 에 원래 의 값 을 바 꾸 고 함수 에서 전달 할 수 있 습 니 다.
원조 와 inout 의 운용
앞 에는 제 가 원 조 에 대한 간단 한 이해 입 니 다. 이런 인식 을 가지 고 Swifter 에서 설명 한 다 원 조 를 보 러 갈 때 쉽게 이해 할 수 있 습 니 다.예 를 들 어 교환 입력, 일반 프로그래머 의 보편적 인 쓰기 입 니 다.
func swapMe(a: inout T, b: inout T) {
    let temp = a
    a=b
    b = temp
}

다 중 그룹 사용 후 쓰기:
func swapMe(a: inout T, b: inout T) {
    (a,b) = (b,a)
}

두 가지 방법 이 달성 한 목적 은 같 지만 그들의 실현 방법 은 다르다.가장 큰 차이 점 은 첫 번 째 방법 으로 추가 적 인 공간 을 열 어 교환 을 완성 하 는 것 이 고 원 조 를 사용 하 는 방법 은 추가 적 인 공간 을 개척 하지 않 는 다 는 것 이다.그들의 호출 방법 은 같다.
var a: Int = 1
var b: Int = 2
swapMe(a: &a, b: &b)
print(a,b)//2,1

만약 에 여러분 이 inout 의 기능 에 대해 궁금 한 점 이 있다 면 우 리 는 다른 방법 으로 비교 해 보 겠 습 니 다.
func swapMe( a: T, b: T){
    var b = b
    var a = a
    (a,b) = (b,a)
    print(a,b)//1,2
}
swapMe(a: a, b: b)
print(a,b)//2,1

매개 변수 앞에서 inout 으로 수식 하 는 방법 으로 함수 내부 에서 외부 매개 변 수 를 변경 합 니 다.매개 변수 앞 에 inout 으로 수식 하 는 방법 이 없습니다. 함수 집행 체 에서 두 개의 수 를 교 환 했 지만 외부의 매개 변 수 는 변 하지 않 았 습 니 다.
총결산
이번 학습 의 총 결 은 좀 난잡 하 게 쓰 였 는데, 원조 에 대해 서 는 여러분 들 이 많이 사용 하 는 것 을 추천 합 니 다.그러나 키워드 inout 는 모두 가 신중하게 사용 해 야 합 니 다. 왜냐하면 그 는 외부 매개 변수의 값 을 직접 바 꾸 고 유리 한 점도 있 고 해로 운 점도 있 습 니 다.

좋은 웹페이지 즐겨찾기