如何在 Swift 中创建静态 class?
How can I create a static class in Swift?
我想创建一个名为 VectorCalculator 的静态 class。也许这个函数应该放在我的 Vector class 中(类似于 Obj-C 中 NSString 的 --stringByAppendingString
方法)...如果您认为...让我知道。
无论如何,我想向名为 VectorCalculator 的静态 class 添加几个静态函数。它会计算'dot product'和return一个Vector。另一个功能可能是 'calculate and return the angle between two given vectors'.
A) 有人会为此创建静态 class 或
B) 我是否应该将这些函数添加为 Vector class 的实例函数,例如...public func dotProductWithVector(v: Vector) -> Vector
和 public func angleWithVector(v: Vector) -> Double
。然后这两个参数向量 v 将应用于向量 classes 主向量 u。
选择 A 或 B 有什么好处?
如果您认为 B,仅供将来参考,您将如何在 Swift 中创建 一个全静态 class?
我想你要找的是 class 函数?
也许你的答案可以在这里找到。
How do I declare a class level function in Swift?
class Foo {
class func Bar() -> String {
return "Bar"
}
}
Foo.Bar()
在 Swift 2.0 中,您可以使用 static 关键字代替 class。但是你应该对结构使用 static 关键字,对 classes
使用 class 关键字
//编辑刚刚看到我正确地误解了你的问题
如果我没理解错的话,你对案例 A 中的 Type 方法感兴趣。你通过在方法的 func 关键字之前写上 static 关键字来表明 type methods。 类 也可以使用 class 关键字来允许 subclasses 覆盖 superclass 对该方法的实现。 (c)
struct Vector {
var x, y, z: Int
}
class VectorCalculator {
static func dotProductOfVector(vec1: Vector, withVector vec2: Vector) -> Vector {
let newX = //calc x coord;
let newY = //calc y coord;;
let newZ = ////calc z coord;;
return Vector(x: newX,y: newY, z: newZ);
}
}
let vec1 = Vector(x:1, y:2, z:3)
let vec2 = Vector(x:4, y:5, z:6)
let v = VectorCalculator.dotProductOfVector(vec1, withVector: vec2)
至于B的好处取决于你解决的任务。如果您想不修改原始向量,使用 A 变体会更方便。但我认为您可以提供这两种类型的功能。
how would you create an all static class in Swift?
static
表示没有实例,所以我将其设为没有初始化程序的结构:
struct VectorCalculator {
@available(*, unavailable) private init() {}
static func dotProduct(v: Vector, w: Vector) -> Vector {
...
}
}
我想创建一个名为 VectorCalculator 的静态 class。也许这个函数应该放在我的 Vector class 中(类似于 Obj-C 中 NSString 的 --stringByAppendingString
方法)...如果您认为...让我知道。
无论如何,我想向名为 VectorCalculator 的静态 class 添加几个静态函数。它会计算'dot product'和return一个Vector。另一个功能可能是 'calculate and return the angle between two given vectors'.
A) 有人会为此创建静态 class 或
B) 我是否应该将这些函数添加为 Vector class 的实例函数,例如...public func dotProductWithVector(v: Vector) -> Vector
和 public func angleWithVector(v: Vector) -> Double
。然后这两个参数向量 v 将应用于向量 classes 主向量 u。
选择 A 或 B 有什么好处?
如果您认为 B,仅供将来参考,您将如何在 Swift 中创建 一个全静态 class?
我想你要找的是 class 函数? 也许你的答案可以在这里找到。 How do I declare a class level function in Swift?
class Foo {
class func Bar() -> String {
return "Bar"
}
}
Foo.Bar()
在 Swift 2.0 中,您可以使用 static 关键字代替 class。但是你应该对结构使用 static 关键字,对 classes
使用 class 关键字//编辑刚刚看到我正确地误解了你的问题
如果我没理解错的话,你对案例 A 中的 Type 方法感兴趣。你通过在方法的 func 关键字之前写上 static 关键字来表明 type methods。 类 也可以使用 class 关键字来允许 subclasses 覆盖 superclass 对该方法的实现。 (c)
struct Vector {
var x, y, z: Int
}
class VectorCalculator {
static func dotProductOfVector(vec1: Vector, withVector vec2: Vector) -> Vector {
let newX = //calc x coord;
let newY = //calc y coord;;
let newZ = ////calc z coord;;
return Vector(x: newX,y: newY, z: newZ);
}
}
let vec1 = Vector(x:1, y:2, z:3)
let vec2 = Vector(x:4, y:5, z:6)
let v = VectorCalculator.dotProductOfVector(vec1, withVector: vec2)
至于B的好处取决于你解决的任务。如果您想不修改原始向量,使用 A 变体会更方便。但我认为您可以提供这两种类型的功能。
how would you create an all static class in Swift?
static
表示没有实例,所以我将其设为没有初始化程序的结构:
struct VectorCalculator {
@available(*, unavailable) private init() {}
static func dotProduct(v: Vector, w: Vector) -> Vector {
...
}
}