Swift - 如何为我的 class 定义一个特殊方法,returns 其对象的字符串表示

Swift - How to I define a special method for my class that returns a string representation of its object

在python中,如果你想定义一个对象的字符串表示,你可以这样做:

class Person:

    def __init__(self, first, last, age):
        self.first = first
        self.last = last
        self.age = age

    def __str__(self):
        return f'{self.first} {self.last}, {self.age} years old'

person_1 = Person('John', 'Smith', 25)

现在,如果你写 print(person_1)str(person_1),那么你会得到 John Smith, 25 years old

如果 __str__ 方法不存在,那么输出将是 <__main__.Person object at 0x104e12e20>

如何在 swift 中做同样的事情?

当然,我可以用我想要的任何名称定义一个方法,然后在对象上调用它,但它会缺少语法糖。

只要遵守CustomStringConvertible协议即可。您所要做的就是实施 description 属性.

struct Person: CustomStringConvertible {
    let name: String
    let age: Int

    var description: String {
        return "[name: \(name), age: \(age)]"
    }
}

print(Person(name: "bob", age: 32)) // [name: bob, age: 32]