对标题血腥道歉,但我无法想到用其他任何方式来表达它。
我是一个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)"
}
}
答案 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)"
}
}