Classes in Swift

Classes in Swift

本文关键字:Swift in Classes      更新时间:2023-10-16

我是Swift的新手,正在学习Classes。我的问题与该代码有关;

  class someClass
{
    class func typeMethod(string:String) -> String
    {
        return string + "_Modified....."
    }
}
var strModify:String = "String"
someClass.typeMethod(strModify)

那是什么?在C++等其他语言中有类似的东西吗?我们在哪里需要它?

它是Swift中的类型的方法。类似于全局函数,但在类的命名空间中。它的调用类似于someClass.typeMethod(),但没有someClass的实例。

C++中的等价函数是静态成员函数,例如

class SomeClass {
public:
   static std::string method(const std::string& str) {
       return str + "_Modified";
   } 
};
...
std::string s = SomeClass::method("test");

class func就像Java中的static method

public static void staticMethod(){
}

关键是,在使用它之前,不需要先创建类的对象。因此,只要不需要首先构造对象,就应该使用类函数。

一个例子是像convertMilimeterToCentimeter(milimeter:Int)这样的转换方法。该方法获取要转换为参数的值,因此该方法的"调用者"不需要是对象。所以你不需要在对象上调用它,但你可以在类本身上调用它:

YourClass.convertMilimeterToCentimeter(1000)

Util类通常主要有静态方法(例如Apache Commons IO)

因此,如果你在Swift中创建一个Util类,你大部分时间都会使用静态函数,因为不需要创建一个对象来执行这些方法。

给定以下类:

class SomeClass {
    class func someClassFunction() {
    }
    func someFunction() {
    }
}

这两个函数之间的区别是第一个,其中class修饰符由类本身持有,而第二个函数someFunction()由类的实例持有。这将改变您可以呼叫他们的方式/时间。例如,对于类函数,您不需要实例来调用函数:

SomeClass.someClassFunction()

但是对于普通函数,您确实需要一个实例,您可以通过使用():实例化它来创建该实例

let foo = SomeClass()
foo.someFunction()

首先,第一行应该是:

class SomeClass

类名应为UpperCamelCase。声明我们正在生成一个类(与结构或枚举相反)。

class func typeMethod(string:String) -> String
{
    return string + "_Modified....."
}

这是类上的一个方法(而不是类实例上的方法)。与类相关的函数称为方法。Swift对所有函数和方法都使用关键字"func"。

(string:string)位是函数的单个参数的标签和类型。"->String"位表示函数的返回类型。默认情况下,在Swift中,函数的第一个参数的标签在调用函数/方法时被删除:

SomeClass.typeMethod("Hello World")

请注意,我使用了UpperCamelCase,所以现在读者很清楚,他们调用的是类方法,而不是实例方法。消息被发送到类本身,而不是该类的特定实例。

请注意,像本例这样,使用单个类方法的类是毫无意义的。您还可以创建一个简单的全局函数。Swift中有许多全局函数与任何类、结构或枚举都不相关。countElements()就是一个很好的例子。

同样值得注意的是,这个类不需要继承,这意味着它不需要是一个类,即使你不想要全局函数。它可以很容易地定义为具有静态函数的结构。

你需要这样的东西的地方取决于上下文。这个例子,像这样断章取义,除了展示一个类方法的例子之外,看起来毫无意义。