【问题标题】:How can I define new generic list of objects in Swift?如何在 Swift 中定义新的通用对象列表?
【发布时间】:2023-04-01 11:21:02
【问题描述】:

我可以使用以下代码在 C# 中轻松定义具有某些对象类型的新集合:

class Person
{
    public int Id { get; set; }
    public string Name { get; set; }

}

// in some other method
var listPesrons = new List<Person>
{
    new Person { Id = 0, Name = "Oleg" },
    new Person { Id = 1, Name = "Lena" }
};

上面代码列表的 Swift 编程语言的类比是什么?

【问题讨论】:

    标签: list generics swift collections initialization


    【解决方案1】:

    接近的等价物是:

    public class Person {
        public var id: Int
        public var name: String
    
        public init(id: Int, name: String) {
            self.id = id
            self.name = name
        }
    }
    
    var listPersons = [
        Person(id: 0, name: "Oleg"),
        Person(id: 1, name: "Lena")
    ]
    

    【讨论】:

      【解决方案2】:

      如果使用结构体,代码非常相似:

      public struct Person {
          public var id: Int
          public var name: String
      }
      
      // persons will be an Swift Array 
      let persons = [
          Person(id: 0, name: "Oleg"),
          Person(id: 1, name: "Lena"),
      ]
      

      如果您想要一个类而不是结构(通常,您可能想首先考虑一个结构,只有当您确实需要类带来的功能时才考虑一个​​类),那么您还需要一个初始化程序:

      public class Person {
          public var id: Int
          public var name: String
      
          public init(id: Int, name: String) {
              self.id = id
              self.name = name
          }
      }
      

      【讨论】: