chr*_*s P 12 static-classes swift
我正在寻找一个名为VectorCalculator的静态类.也许这个函数应该放在我的Vector类中(类似于NSString的 - -stringByAppendingString
Obj-C中的方法)......如果你认为......让我知道.
无论如何,我想在一个名为VectorCalculator的静态类中添加几个静态函数.它将计算'点积'并返回一个Vector.另一个功能可能是"计算并返回两个给定矢量之间的角度".
A)是否有人会为此创建一个静态类
B)我应该将这些函数添加为Vector类的实例函数,例如...... public func dotProductWithVector(v: Vector) -> Vector
和public func angleWithVector(v: Vector) -> Double
.然后这两个参数向量v将应用于Vector类main Vector u.
去A或B有什么好处?
如果您认为B,仅供将来参考,您将如何在Swift中创建一个全静态类?
Cœu*_*œur 12
你会如何在Swift中创建一个全静态类?
static
没有实例,所以我会把它作为一个没有初始化器的结构:
struct VectorCalculator {
@available(*, unavailable) private init() {}
static func dotProduct(v: Vector, w: Vector) -> Vector {
...
}
}
Run Code Online (Sandbox Code Playgroud)
cur*_*ous 10
如果我已经正确理解你,你会对案例A中的类型方法感兴趣.通过在方法的func关键字之前写入static关键字来指示类型方法.类也可以使用class关键字来允许子类覆盖超类的该方法的实现.(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)
Run Code Online (Sandbox Code Playgroud)
至于B的好处,它取决于你解决的任务.如果你想保留未经修改的原始载体,使用A变体会更方便.但我认为你可以提供两种类型的功能.
归档时间: |
|
查看次数: |
21682 次 |
最近记录: |