swift - 如何在 Swift 类内部的函数中使用类名

标签 swift class object

<分区>

为标题血腥道歉,但我真的想不出任何其他方式来表达它。

我是 Swift 菜鸟,正在尝试制作一个愚蠢的小程序来练习。

无论如何,我有父类(super class),我计划创建几个其他类,从中插入函数但覆盖属性。我有一个函数结合了所有类的属性,但我希望能够在函数中使用类名,但我完全不知道如何实际执行此操作。

我已经搜索了文档,但没有找到任何结论。如果可能的话,我还想在不实际更改类名的情况下将类名改为小写。也许(以我对 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)"
    }
}

最佳答案

使用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)"
    }
}

关于swift - 如何在 Swift 类内部的函数中使用类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44076070/

相关文章:

ios - Realm 过滤器结果使用哪种类型

swift - NSTimer 无法在非 GameScene 的类中工作

objective-c 类变量 : when is dealloc called?

swift - 在 Vapor 中使用原始 sql 返回条目总数

swift - UIDatePicker 仅显示特定日期

swift - 可以为 swift 项目创建自定义 bundle 名称吗?

android - java.lang.RuntimeException : Unable to instantiate activity ComponentInfo//java. lang.ClassNotFoundException 异常

javascript - 如何在元素单击时获取对象属性?

java - 协助在 Java 中创建网格/球(对象?)

c++ - 创建指向列表中对象的指针映射?