Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是否展开要打印的SCInvector3/SCInvector4值?_Ios_Swift_Scenekit - Fatal编程技术网

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。谢谢你的片段@克拉夏洛特:你完全正确,我已经更新了答案。谢谢你让我知道@马丁纳:你教育的人比你意识到的还要多。不需要感谢任何人;我们都需要感谢你!:)