구조체로 생성 된 객체를 검색하고 싶습니다.구조체에 의해 생성 된 객체 검색
이것들은 Candy
구조체로 생성 된 객체라고 가정합시다.
두 개의 배열을 만들고 색인으로 개체를 찾지 않고 "Lollipop"요소의 범주를 어떻게 찾을 수 있습니까?
구조체로 생성 된 객체를 검색하고 싶습니다.구조체에 의해 생성 된 객체 검색
이것들은 Candy
구조체로 생성 된 객체라고 가정합시다.
두 개의 배열을 만들고 색인으로 개체를 찾지 않고 "Lollipop"요소의 범주를 어떻게 찾을 수 있습니까?
를 그냥이 :
candies.first { $0.name == "Lollipop" }
당신이 다음 하나 이상의 "롤리팝"이있을 것으로 예상되는 경우 :
행동candies.filter { $0.name == "Lollipop" }
:
13> struct Candy {
14. let cat: String
15. let name: String
16. }
17> var candies = [
18. Candy (cat: "Hard", name: "Lollipop"),
19. Candy (cat: "Hard", name: "Jaw Breaker")
20. ]
candies: [Candy] = 2 values {
[0] = {
cat = "Hard"
name = "Lollipop"
}
[1] = {
cat = "Hard"
name = "Jaw Breaker"
}
}
21> candies.first { $0.name == "Lollipop" }
$R1: Candy? = (cat = "Hard", name = "Lollipop")
22> candies.filter { $0.name == "Lollipop" }
$R2: [Candy] = 1 value {
[0] = {
cat = "Hard"
name = "Lollipop"
}
}
이 작업을 시도 할 수 :
if let found = find(lazy(array).map({ $0.name }), "Foo") {
let obj = array[found]
}
죄송합니다. 이것은 다소 오래되었습니다. candies.first {$ 0.name == "Candyname"}이 트릭을해야합니다. –
이것은 스위프트 1 이었습니까? 나는 그것이라고 생각했다. 그러나 나는 그것을 인정하지 않았다, 확실하지 않았다. 이 구문은 이상적인 것이 아니며 변경된 좋은 점입니다. :) – Moritz
스위프트 3을 사용하면 더 좋아질 것입니다.) –
'candies.first {$ 0.name == "Lollipop"}'은 매우 멋집니다. 하지만 Swift 3에만 해당됩니다. Swift 2에서 .first는 배열의 첫 번째 객체에 대한 속성이며, 이와 같은 술어를 허용하는 메서드는 없습니다. 언급 할만한 가치가있는, IMO. – Moritz