[Swift] 공부하면서 알게된 것

Cobugi·2021년 8월 21일
0

etc

목록 보기
2/2
post-thumbnail

Array.last(or Array.first)

  • python의 list에서 마지막 데이터에 접근하기 위해서 List[-1]를 사용했었다.

  • 하지만 swift에서는 이러한 대괄호 접근이 안된다.

  • 따라서 만약 배열의 마지막(또는 첫번째)에 접근한다면 Array.last(or Array.first)을 사용하자.

  • 옵셔널 값으로 반환되므로 해제를 해서 사용 또는 비교연산자를 통해 묵시적 해제를 하자.

  • String.last(or String.first)

    • 반환값이 Optional<Character>

Array(String).popLast()(or .removeLast())

  • 스택 자료구조에서 push, pop이 있다.
  • swift에서의 push는 Array.append(something)
  • pop은 popLast() 또는 removeLast()가 있다
    • popLast()은 옵셔널로 반환된다
    • removeLast()는 아니다(만약 제거할게 없다면 뻑난다)

Array.joined(separator: )

  • python에서 "\n".join(Array)
  • swift에서는 Array.joined(separator: "\n")
  • 배열이 [String]일때

ex) 백준 1874번 스택 수열

import Foundation

let n = Int(readLine()!)!

var count = 1
var stack: [Int] = []
var answer: [String] = []

for _ in 0..<n {
    let num = Int(readLine()!)!
    
    while count <= num {
        stack.append(count)
        answer.append("+")
        count += 1
    }

    if stack.last == num {
        stack.popLast()
        answer.append("-")
    } else {
        print("NO")
        exit(0)
    }
}

print(answer.joined(separator: "\n"))

Array(String).enumerated()

  • index 값과 함께 나타낼 수 있음
  • tuple로 저장할 때 유용
let names = ["Lee", "Kim", "Park", "Choi"]
for (index, name) in names.enumerated() {
	print(index, name)
        /*
        0 Lee
        1 Kim
        2 Park
        3 Choi
        */
    	let tuple = (index, name)
    	print(tuple, type(of: tuple))
        /*
        (0, "Lee") (Int, String)
        (1, "Kim") (Int, String)
        (2, "Park") (Int, String)
        (3, "Choi") (Int, String)
        */
        
    }

Array(String).max() (or min())

  • 배열 또는 문자열의 최대 또는 최솟값을 반환
  • 옵셔널 값으로 반환한다
  • "12345" 또는 ["1", "2", "3", "4", "5"]에서
    • 문자열에서 max()하면 Optional<Character> 반환
    • 배열에서는 max()하면 Optional<String> 반환
  • [1, 2, 3, 4, 5]에서
    • Int로 구성된 배열은 Optional<Int> 반환

for i in <String>

  • String을 for문을 돌면서 타입을 확인해보면
  • Character 형이다

Array(String).isEmpty

  • 배열 또는 문자열이 비어있는지 확인
  • 비어있으면("", []) true, 아니면 false

Array(String).append(contentOf: <Array>(<String>))

  • 배열과 배열을 합칠 때
  • 문자열과 문자열을 합칠 때

Dictionary 호출시 Optional

let test = ["turtle": "Cobugi", "cat": "Cheshire"]
print(test["cat"]) // Optional("Cheshire")

Array Slice Type

  • 배열을 쪼갤 때 (Array[0...2]과 같이)
  • type은 ArraySlice이다
  • 배열로 쓰고 싶으면 Array(ArraySlice<Int>)와 같이 Array로 형변환 해줘야 한다

Array[Array.index(before: Array.endIndex)]

  • 배열의 마지막 요소에 인덱스로 접근하는 방법
profile
iOS Developer 🐢

0개의 댓글