Swift中的类

时间:2015-02-13 18:03:25

标签: c++ xcode class swift

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

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

var strModify:String = "String"
someClass.typeMethod(strModify)
那是什么?在C ++等其他语言中是否有类似的东西?我们需要在哪里?

4 个答案:

答案 0 :(得分:2)

这是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");

答案 1 :(得分:0)

class func就像Java中的static method

public static void staticMethod(){
}

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

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

YourClass.convertMilimeterToCentimeter(1000)

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

所以如果你在Swift中创建一个Util-class,你会在大多数时候使用静态函数,因为不需要创建一个对象来执行这些方法。

答案 2 :(得分:0)

鉴于以下课程:

class SomeClass {
    class func someClassFunction() {
    }

    func someFunction() {
    }
}

两个函数之间的区别是第一个,class修饰符由类本身保存,而第二个函数someFunction()由类的实例保存。这会改变您何时/何时可以调用它们。例如,使用类函数,您不需要实例来调用函数:

SomeClass.someClassFunction()

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

let foo = SomeClass()
foo.someFunction()

答案 3 :(得分:-1)

首先,第一行应为:

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()就是这种函数的一个很好的例子。

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

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