swift의tuples

2498 단어
Tuples의 도입은 정말로 우리가 프로그램을 작성하는 데 큰 편리를 가져다 준다.tuple이 없다면, 임시로 사용되는 일부 자정 구조에 직면할 때, 우리는class나struct와 같은 중량급 유형을 사용해서 정의해야 한다.그러나tuple이 있으면 우리는 몇 가지 유형을 하나의 tuple 대상으로 만들어 강력한 표현 능력을 얻을 수 있다.

1. tuples 만들기

var point = (2,2)

swift에서 우리는tuple 대상을 용납할 수 있다.point는 두 정수로 구성된tuple 대상이고 원소 사이는 쉼표로 구분된다(수조, 사전 원소 사이의 구분은 모두 이렇다). 모든 내용은 작은 괄호로 괄호로 묶는다.물론, 우리는 더욱 복잡한tuple을 구성할 수 있으며, 거의 모든 swift가 지원하는 유형 (tuple 자신 포함) 은 모두tuple을 구성하는 요소로 사용할 수 있다.
var tuple = (2,false,[1,2,3],("a",1))

2, tuple 요소 액세스 및 수정


우리는 색인 위치로tuple의 요소에 접근할 수 있습니다. 색인 위치는 0에서 시작하여 하나하나 증가합니다. 이것은 약간 수조 같지 않습니까?
var point = (2,2)
point.0 // 2 ,  
point.1 // 2 ,  

색인 위치로tuple의 방문을 완성할 수 있지만 아쉽게도 0, 1은 숫자이기 때문에 위치를 표현하는 것 이외에 더 많은 논리적 의미를 전달할 수 없다.우리는 원래point로 정한 것은 직각 좌표계의 한 점이다. 우리는 x, y 이런 방식으로 표현하기를 원해야 충분하겠는가.이때 우리는 이름으로tuple을 정의할 수 있다.
var point: (x: Int,y: Int) = (2,2)
point.x // 2 ,  
point.y // 2 ,  

tuple을 만들 때 모든 위치의 원소에 이름을 붙이면 원소의 이름으로 이 원소에 접근할 수 있습니다. 이것은 tuple의 유형을 강조해야 합니다. tuple의 유형도 모든 원소의 유형이 공동으로 결정됩니다. (그래서 swift는 Tuple 형식을 제공할 수 없습니다.)
tuple의 요소는 삭제할 수 없지만 수정할 수 있습니다. 아래의 방법으로 tuple의 요소를 수정할 수 있습니다.
var point: (x: Int,y: Int) = (2,2)
point.x = 3  //  tuple 3, 

3. 투플의 실천


이 섹션은 "Tuples in Swift, Advanced Usage and Best Practices"를 참조한 것으로, 이 섹션의 몇 가지 재미있는 지식을 간략하게 열거하고 원문을 읽어주시기 바랍니다.
  • 본고의 첫머리에서tuple은 우리에게 임시 구조를 구축하는 유연성을 제공했다.struct나tuple을 선택하여 구축을 진행하는 것은 모델이 지속적인 존재를 필요로 하는지 여부에 달려 있습니다.tuple이 없는 프로그래밍 언어에서, 우리는 임시적인 구조를 구성하기 위해 선택의 여지가 없을 가능성이 높다.
  • 만약에 우리가 struct로 구축한 모델이 데이터의 사유성을 엄격하게 통제해야 한다면 사실은tuple을 사용하여 구축하는 것을 고려할 수 있다. 왜냐하면tuple의 데이터는 원래 사유이기 때문이다.
  • tuple을 고정된 크기의 서열로 할 수 있다. 예를 들어 만약에 우리가 데이터를 만들고 그 길이가 12라는 것을 보증해야 한다면 이것은 쉽지 않다. 왜냐하면 수조는 하나의 서열의 수요를 충족시켰기 때문이다. 그러나 우리는 다른 사람이 데이터를 더 넣거나 적게 넣지 않도록 어떻게 통제합니까?12개의 요소를 포함하는tuple 두 개를 사용하는 것이 낫습니다. 컴파일러가 길이를 검사하는 데 도움을 줄 수 있습니다.
  • tuple로 복잡한 가변 파라미터를 구축할 수 있다. 이렇게 하면 루비 방법처럼 끝 파라미터를hash표로 삼을 수 있고 키:vale 유형의 파라미터를 유연하게 추가할 수 있어 상당히 편리하다
  • func varargsFunc(params: (String,Int)...) {
    
    }
    
  • tuple은func/method 매개 변수로 사용할 수 있다. 함수의 매개 변수 목록은 사실tuple과 비슷하기 때문에tuple 대상을 함수의 매개 변수 목록으로 전달할 수 있다.
  • func somefunc(a: String,_ b: Int,_ c: Bool)
       print("Hello,world")
    }
    
    let tuple = ("hi",1,true)
    
    someFunc(tuple)
    

    좋은 웹페이지 즐겨찾기