Classes in Swift
Classes in Swift
我是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()就是一个很好的例子。
同样值得注意的是,这个类不需要继承,这意味着它不需要是一个类,即使你不想要全局函数。它可以很容易地定义为具有静态函数的结构。
你需要这样的东西的地方取决于上下文。这个例子,像这样断章取义,除了展示一个类方法的例子之外,看起来毫无意义。
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 在 swift 项目中使用 CPP 库
- Softmax Implementation in C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- IF-nesting in c++
- Gurobi GRBModel and GRBmodel in C++
- Tensorflow Hub in C++
- Centos7 g++ "to_string is not in a member of std"
- Classes in Swift
- OpenCV HoughTransformation in Swift
- 在C++中使用libCurl API的身份验证SAIO(swift all in one)