Python Swift-如何为类定义一个特殊方法,该方法返回其对象的字符串表示形式

Python Swift-如何为类定义一个特殊方法,该方法返回其对象的字符串表示形式,python,swift,syntactic-sugar,Python,Swift,Syntactic Sugar,在python中,如果要定义对象的字符串表示形式,可以执行以下操作: 班级人员: 定义初始(自我、第一、最后、年龄): self.first=第一 self.last=last self.age=年龄 定义(自我): 返回f'{self.first}{self.last},{self.age}岁' person_1=person('John','Smith',25岁) 现在,如果你写print(person\u 1)或str(person\u 1),你就会得到John Smith,25岁 如果

在python中,如果要定义对象的字符串表示形式,可以执行以下操作:

班级人员:
定义初始(自我、第一、最后、年龄):
self.first=第一
self.last=last
self.age=年龄
定义(自我):
返回f'{self.first}{self.last},{self.age}岁'
person_1=person('John','Smith',25岁)
现在,如果你写
print(person\u 1)
str(person\u 1)
,你就会得到
John Smith,25岁

如果
\uuu str\uuu
方法不存在,那么输出将是

如何在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]

只需遵守
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]

使您的类/结构符合CustomStringConverable协议。这应该可以满足你的需要。我是swift新手,以前从未使用过协议。你能告诉我怎么做吗?当然可以。请参见下文使您的类/结构符合CustomStringConverable协议。这应该可以满足你的需要。我是swift新手,以前从未使用过协议。你能告诉我怎么做吗?当然可以。见下文