展开要打印的 SCNVector3/SCNVector4 个值?
Unwrapping SCNVector3/SCNVector4 values to print?
这应该是一个简单的问题
import SceneKit
import Accelerate
var str:SCNVector3 = SCNVector3Make(1, 2, -8)
println("vector \(str)"
回答
vector C.SCNVector3
如何展开并显示像 [ 1, 2, -8] 这样的向量?
如果你去看看 SCNVector3 的定义,你会发现它是一个结构,没有任何方法可以像你想要的那样很好地打印。 Swift 中打印描述的结构将符合 Printable 协议。
由于此结构不适合您,请单独打印出每个组件:
println("Vector: [\(str.x), \(str.y), \(str.z)]")
输出:向量:[1.0, 2.0, -8.0]
Swift2 的更新:在Swift2 中,默认打印结构
具有所有属性:
let str = SCNVector3Make(1, 2, -8)
print("vector \(str)")
// Output:
// vector SCNVector3(x: 1.0, y: 2.0, z: -8.0)
您可以通过采用 CustomStringConvertible
自定义输出
协议:
extension SCNVector3 : CustomStringConvertible {
public var description: String {
return "[\(x), \(y), \(z)]"
}
}
let str = SCNVector3Make(1, 2, -8)
print("vector \(str)")
// Output:
// vector [1.0, 2.0, -8.0]
上一个回答:
正如 Eric 已经解释的那样,println()
检查对象是否符合
Printable
协议。您可以为 SCNVector3
添加一致性
使用自定义扩展名:
extension SCNVector3 : Printable {
public var description: String {
return "[\(self.x), \(self.y), \(self.z)]"
}
}
var str = SCNVector3Make(1, 2, -8)
println("vector \(str)")
// Output:
// vector [1.0, 2.0, -8.0]
这应该是一个简单的问题
import SceneKit
import Accelerate
var str:SCNVector3 = SCNVector3Make(1, 2, -8)
println("vector \(str)"
回答
vector C.SCNVector3
如何展开并显示像 [ 1, 2, -8] 这样的向量?
如果你去看看 SCNVector3 的定义,你会发现它是一个结构,没有任何方法可以像你想要的那样很好地打印。 Swift 中打印描述的结构将符合 Printable 协议。
由于此结构不适合您,请单独打印出每个组件:
println("Vector: [\(str.x), \(str.y), \(str.z)]")
输出:向量:[1.0, 2.0, -8.0]
Swift2 的更新:在Swift2 中,默认打印结构 具有所有属性:
let str = SCNVector3Make(1, 2, -8)
print("vector \(str)")
// Output:
// vector SCNVector3(x: 1.0, y: 2.0, z: -8.0)
您可以通过采用 CustomStringConvertible
自定义输出
协议:
extension SCNVector3 : CustomStringConvertible {
public var description: String {
return "[\(x), \(y), \(z)]"
}
}
let str = SCNVector3Make(1, 2, -8)
print("vector \(str)")
// Output:
// vector [1.0, 2.0, -8.0]
上一个回答:
正如 Eric 已经解释的那样,println()
检查对象是否符合
Printable
协议。您可以为 SCNVector3
添加一致性
使用自定义扩展名:
extension SCNVector3 : Printable {
public var description: String {
return "[\(self.x), \(self.y), \(self.z)]"
}
}
var str = SCNVector3Make(1, 2, -8)
println("vector \(str)")
// Output:
// vector [1.0, 2.0, -8.0]