gpt4 book ai didi

function - Swift 类函数

转载 作者:IT王子 更新时间:2023-10-29 05:40:50 28 4
gpt4 key购买 nike

所以我想知道类函数和“普通实例函数”。我想知道类函数的目的是什么。只是为了可以使用某些功能而无需先将类分配给变量,还是它有其他目的?

class Dog {
func bark()->String{
return "Woef Woef!"
}
class func bark_class()->String{
return "Woef Woef!"
}
}

var dog = Dog()
dog.bark() // Woef Woef!

Dog.bark() // Throws and error
Dog.bark_class() // Woef Woef! > Apparently is doens't need an initiated object

最佳答案

无需提供类实例即可调用静态方法 - 它们只需要类类型:

Dog.bark_class()

它们存在的原因是因为在某些情况下并不真正需要实例。通常,可以作为全局函数移出类的实例方法很适合作为静态方法。另一种确定方法是否可以静态化的方法是检查它的主体——如果它从不引用类属性或方法,那么它可以静态化。另一个明显的区别是静态方法不能直接访问实例属性和方法 - 为此,类的实例必须作为参数传入或在主体中实例化。

实例方法实际上也是静态方法,区别在于它们是curried functions。将类实例作为第一个参数:

var dog = Dog()
Dog.bark(dog)()

但可以使用传统语法更简洁地调用:

dog.bark()

我明确地谈到了类,但所说的也适用于结构 - 唯一的区别是在定义静态方法时使用 static 关键字代替 class .

关于function - Swift 类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28129609/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com