[Swift] 기본 문법3

한음·2022년 3월 3일
0

집단 자료형

  • Array 배열
  • Set 집합 (중복 X)
  • Tuple 튜플 (수정 • 삭제 X)
  • Dictionary 딕셔너리

** 튜플을 제외한 나머지는 저장되는 데이터 타입이 동일해야함.

배열

  1. 저장되는 element 타입에는 제약이 없지만, 같은 배열 내의 원소는 동일 타입이어야 함.
  2. 선언 시 타입 명시
  3. 동적 확장 가능
  4. 정적 선언 가능

정적 선언

var numbers = [1, 2, 3, 4]

처음부터 원소를 포함하여 선언. 별도의 배열 선언이 필요 없음.

// for 문 예제
let length = numbers.count // 이렇게만 쓴다

for i in 0..<length{ // 길이로 순회
	print(numbers[i])
}

for i in numbers { // 이터레이터
	print(i)
    print(i.index(of: row))
}

let nums: [Int] = [1,2,3,4,5]
for (idx, n) in nums.enumerated(){
    print("\(idx) : \(n)")
}
   

동적 선언과 초기화

선언 -> 메모리 공간 차지 X, 초기화 시 할당.
두 가지 형식 사용 가능.

// 1. Array 클래스 사용
var nums = Array<Int>() // 선언, 초기화 동시에. () 가 붙어 생성자 호출되는 듯

var nums : Array<Int> // 선언. 자료형만 표시함
nums = Array() // 초기화


// 2. 배열 정의 구문 사용
var nums = [Int]() // 선언 초기화 동시에

var nums : [Int] // 선언
nums = [] // 빈 배열 생성 후 할당. 생성자를 사용하지 않기 때문에 엄밀하게 초기화는 아님.
// 굳이 한다면 nums = [Int]() 이런식으로 사용 가능


// 선언, 초기화 예시

var nums : [Int] // 선언
nums = [Int]() // 초기화

var cities : [String] // 선언
cities = [] // 배열 할당

var aged : [Int] = [] // 타입 어노테이션 + 초기화

var visited : Array<Bool> = [Bool]() // 타입 어노테이션 + 제네릭 + 초기화

...

tip) isEmpty 괄호 없이 호출

추가 메소드

  • append(_:)
  • insert(_:at:) 원하는 위치에 삽입
  • append(contentsOf:) 여러 개 한번에 (배열이 인자로 들어간다)
예시
var nums = [Int]()
nums.append(1)
nums.append(contentsOf: [2,3,4])
nums.insert(999, at: 2)

print(nums)
// [1, 2, 999, 3, 4]

insert 는 예외적으로 가능한 인덱스 + 1 에 대해서는 IndexError 없이 삽입 해준다. append 와 동일하게 동작.

슬라이싱

var nums = [0,1,2,3]
nums[1...2] = [9,9,9,9,9] // 슬라이싱한 범위 이상의 배열을 넣을 수도 있다.
print(nums)
// [0, 9, 9, 9, 9, 9, 3]

nums[2...6] = [5] // 범위 이하도 마찬가지
print(nums)
// [0, 9, 5]

배열의 확장 축소가 일어남.
profile
https://github.com/0hhanum

0개의 댓글