Swift 새 기능 모듈 (Tuple) 과 키워드 inout
최근 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 는 모두 가 신중하게 사용 해 야 합 니 다. 왜냐하면 그 는 외부 매개 변수의 값 을 직접 바 꾸 고 유리 한 점도 있 고 해로 운 점도 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.