这应该是一个简单的问题
import SceneKit
import Accelerate
var str:SCNVector3 = SCNVector3Make(1, 2, -8)
println("vector \(str)"
答案
vector C.SCNVector3
如何打开并显示[1,2,-8]这样的矢量?
答案 0 :(得分:4)
更新Swift 2:在Swift 2中,默认打印结构 所有属性:
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]
答案 1 :(得分:2)
如果你去看看SCNVector3的定义,你会发现它是一个结构,并没有任何方法可以像你想要的那样打印得很好。 Swift中打印出描述的结构符合Printable协议。
由于此结构不能为您执行此操作,因此请单独打印每个组件:
println("Vector: [\(str.x), \(str.y), \(str.z)]")
输出:矢量:[1.0,2.0,-8.0]