Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Swift中类内部的函数中使用类名_Swift_Class_Object - Fatal编程技术网

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

如何在Swift中类内部的函数中使用类名,swift,class,object,Swift,Class,Object,为戈尔的名字道歉,但我真的想不出任何其他的表达方式 我是一个敏捷的傻瓜,我正在尝试做一个愚蠢的小程序来练习 无论如何,我有一个超类,我计划创建几个其他类,从中插入函数,但重写属性。我有一个结合了所有类的属性的函数,但我希望能够在函数中使用类名,而我完全不知道如何真正做到这一点 我搜索了文件,但没有找到任何结论。如果可能的话,我还希望在不更改类名的情况下将类名改为小写。也许(以我对Python的模糊知识)类似于.lower 我的尝试如下: class FoodItem { var ingr

为戈尔的名字道歉,但我真的想不出任何其他的表达方式

我是一个敏捷的傻瓜,我正在尝试做一个愚蠢的小程序来练习

无论如何,我有一个超类,我计划创建几个其他类,从中插入函数,但重写属性。我有一个结合了所有类的属性的函数,但我希望能够在函数中使用类名,而我完全不知道如何真正做到这一点

我搜索了文件,但没有找到任何结论。如果可能的话,我还希望在不更改类名的情况下将类名改为小写。也许(以我对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
的类型。在这样的字符串插值段中使用时,它将转换为类型名称的
字符串
表示形式

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 3代码在中。要使类名小写,可以创建一个字符串var并将其小写。类似于
let className=“\(类型(of:test))”。小写()。然后在上面的返回语句中使用它。