如何在Swift

时间:2017-05-19 17:43:53

标签: swift class object

对标题血腥道歉,但我无法想到用其他任何方式来表达它。

我是一个Swift noob,我正试图制作一个愚蠢的小程序来练习。

无论如何,我有超类,我打算创建几个其他类从中插入函数但覆盖属性。我有一个函数,它结合了所有类的属性,但我希望能够在函数中使用类名,并且完全无法知道如何实际执行此操作。

我搜索了文档,但没有找到任何结论。如果可能的话,我还想让类名小写而不实际更改类名。也许(我对Python的模糊知识)类似于.lower

我的尝试如下:

class FoodItem {
    var ingredientOne: String = "Default ingredient."
    var ingredientTwo: String = "Also a default ingredient."
    var ingredientThree: String = "Another default ingredient."

func returnStatement() -> String {
    return "A classnamegoeshere is made from \(ingredientOne), \(ingredientTwo), and \(ingredientThree)"
    }
}

1 个答案:

答案 0 :(得分:1)

使用type(of:)获取self的类型。当在像这样的字符串插值段中使用时,它将被转换为类型名称的String表示。

return "A \(type(of: self)) is made from \(ingredientOne), \(ingredientTwo), and \(ingredientThree)"

我会稍微改变一下:

protocol FoodItem {
    var ingredients: (String, String, String) { get set }
}

extension Fooditem {
    func returnStatement() -> String {
        return "A \(type(of: self)) is made from \(ingredients.0), \(ingredients.1), and \(ingredients.2)"
    }
}