Swift 사전을 통한 반복
Xcode가 Swift Programming Language Guide에서 제공하는 이 실험에 대한 답변에 대해 조금 혼란스럽습니다.
// Use a for-in to iterate through a dictionary (experiment)
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25]
]
var largest = 0
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
largest
사전이 변환되는 동안 가장 많은 숫자가 변수로 설정되는 것으로 알고 있습니다.largest
그런데 Xcode가 왜 그런 말을 하는지 헷갈린다.largest
각 테스트에 따라 5회 또는 1회 또는 3회 설정됩니다.
코드를 보면, 「Prime」만 6회(2, 3, 5, 7, 11, 13)로 설정되어 있는 것을 알 수 있습니다.피보나치의 숫자는 모두 현재 "Prime"에서 13으로 설정되어 있는 가장 큰 수치보다 작기 때문에 생략해야 합니다.그런 다음 16으로 설정하고 마지막으로 "제곱"에서 25로 설정하여 총 8회 산출합니다.
내가 완전히 명백한 것을 놓쳤나?
Swift(및 기타 언어) 사전은 주문되지 않습니다.사전을 통해 반복할 때 순서가 초기화 순서와 일치한다는 보장은 없습니다.이 예에서는 Swift가 다른 키보다 먼저 "Square" 키를 처리합니다.루프에 인쇄문을 추가하면 알 수 있습니다. 25는 사각의 5번째 요소이므로 가장 큰 것은 사각의 5번째 요소에 대해 5번 설정되고 25에 머무릅니다.
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25]
]
var largest = 0
for (kind, numbers) in interestingNumbers {
println("kind: \(kind)")
for number in numbers {
if number > largest {
largest = number
}
}
}
largest
다음의 출력이 있습니다.
kind: Square kind: Prime kind: Fibonacci
let dict : [String : Any] = ["FirstName" : "Maninder" , "LastName" : "Singh" , "Address" : "Chandigarh"]
dict.forEach { print($0) }
결과는 다음과 같습니다.
("이름", "매니저") ("성", "싱") ("주소", "찬디가르")
사전을 통해 반복하는 사용자 정의 함수입니다.
func findDic(dict: [String: String]) {
for (key, value) in dict {
print("\(key) : \(value)")
}
}
findDic(dict: ["Animal": "Lion", "Bird": "Sparrow"])
// prints…
// Animal : Lion
// Bird : Sparrow
모든 값에 대해 반복하는 경우:
dict.values.forEach { value in
// print(value)
}
다음은 이 실험에 대한 대안입니다(Swift 3.0).이것은 어떤 종류의 숫자가 가장 컸는지 정확히 알려준다.
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
var largest = 0
var whichKind: String? = nil
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
whichKind = kind
largest = number
}
}
}
print(whichKind)
print(largest)
OUTPUT:
Optional("Square")
25
를 사용할 수도 있습니다.values.makeIterator()
다음과 같이 dict 값을 반복한다.
for sb in sbItems.values.makeIterator(){
// do something with your sb item..
print(sb)
}
또한 다음과 같이 보다 유연한 스타일로 반복할 수도 있습니다.
sbItems.values.makeIterator().forEach{
// $0 is your dict value..
print($0)
}
sbItems
dict type 입니다.[String : NSManagedObject]
언급URL : https://stackoverflow.com/questions/24111627/iterating-through-a-dictionary-in-swift
'itsource' 카테고리의 다른 글
약한 참조와 소유하지 않은 참조의 차이점은 무엇입니까? (0) | 2023.04.22 |
---|---|
Azure 함수 - 함수는 정적 클래스 안에 작성해야 합니다. (0) | 2023.04.22 |
Django에서 여러 쿼리 세트를 결합하는 방법은 무엇입니까? (0) | 2023.04.22 |
PS1과 PROMT_COMMAND의 차이점은 무엇입니까? (0) | 2023.04.22 |
잠재적으로 위험한 요청입니다.클라이언트(*)에서 경로 값이 탐지되었습니다. (0) | 2023.04.22 |