Ios 是否展开要打印的SCInvector3/SCInvector4值?
这应该是一个简单的问题Ios 是否展开要打印的SCInvector3/SCInvector4值?,ios,swift,scenekit,Ios,Swift,Scenekit,这应该是一个简单的问题 import SceneKit import Accelerate var str:SCNVector3 = SCNVector3Make(1, 2, -8) println("vector \(str)" 答复 vector C.SCNVector3 如何像[1,2,-8]那样展开和显示向量?如果你去看一下SCInvector3的定义,你会发现它是一个结构,没有任何方法可以像你想要的那样很好地打印。Swift中打印描述的结构将符合协
import SceneKit
import Accelerate
var str:SCNVector3 = SCNVector3Make(1, 2, -8)
println("vector \(str)"
答复
vector C.SCNVector3
如何像[1,2,-8]那样展开和显示向量?如果你去看一下SCInvector3的定义,你会发现它是一个结构,没有任何方法可以像你想要的那样很好地打印。Swift中打印描述的结构将符合协议 由于此结构不适合您,请单独打印每个组件:
println("Vector: [\(str.x), \(str.y), \(str.z)]")
输出:Vector:[1.0,2.0,-8.0]如果你去看看SCInvector3的定义,你会发现它是一个结构,没有任何方法可以像你想要的那样很好地打印。Swift中打印描述的结构将符合协议 由于此结构不适合您,请单独打印每个组件:
println("Vector: [\(str.x), \(str.y), \(str.z)]")
输出:矢量:[1.0,2.0,-8.0]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()
检查对象是否符合
到可打印的协议。您可以为SCInvector3
使用自定义扩展名:
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]
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()
检查对象是否符合
到可打印的协议。您可以为SCInvector3
使用自定义扩展名:
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]
谢谢,这会起作用,但我希望像perl一样对打印内联进行矢量化。谢谢,这会起作用,但我希望像perl一样对打印内联进行矢量化。Printable已重命名为CustomStringConvertible。谢谢你的片段@克拉夏洛特:你完全正确,我已经更新了答案。谢谢你让我知道@马丁纳:你教育的人比你意识到的还要多。不需要感谢任何人;我们都需要感谢你!:)Printable已重命名为CustomStringConvertible。谢谢你的片段@克拉夏洛特:你完全正确,我已经更新了答案。谢谢你让我知道@马丁纳:你教育的人比你意识到的还要多。不需要感谢任何人;我们都需要感谢你!:)