搜索由 struct 创建的对象

Searching objects created by struct

我想搜索由 struct 创建的对象。

让我们假设这些是由 Candy 结构创建的对象。

candies = [
  Candy(category:"Chocolate", name:"Chocolate Bar"),
  Candy(category:"Chocolate", name:"Chocolate Chip"),
  Candy(category:"Chocolate", name:"Dark Chocolate"),
  Candy(category:"Hard", name:"Lollipop"),
  Candy(category:"Hard", name:"Candy Cane"),
  Candy(category:"Hard", name:"Jaw Breaker"),
  Candy(category:"Other", name:"Caramel"),
  Candy(category:"Other", name:"Sour Chew"),
  Candy(category:"Other", name:"Gummi Bear")
]

如何在不创建两个数组并通过索引查找对象的情况下找到 "Lollipop" 元素的类别?

就是这个:

candies.first { [=10=].name == "Lollipop" }

如果您希望有多个 "Lollipop" 那么:

candies.filter { [=11=].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 { [=12=].name == "Lollipop" } 
$R1: Candy? = (cat = "Hard", name = "Lollipop")

 22> candies.filter { [=12=].name == "Lollipop" } 
$R2: [Candy] = 1 value {
  [0] = {
    cat = "Hard"
    name = "Lollipop"
  }
}