Swift - Как мне определить специальный метод для моего класса, который возвращает строковое представление своего объекта - PullRequest
0 голосов
/ 18 марта 2020

В 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?

Конечно, я мог бы определить метод с любым именем, которое я хочу, и затем вызвать его для объекта, но ему не хватило бы syntacti c sugar.

1 Ответ

0 голосов
/ 18 марта 2020

Просто соответствует протоколу 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...