我想创建一个精灵池,我可以在屏幕上移动而无需重新初始化并将它们一遍又一遍地添加到我的场景中。
为此,我希望以一种我可以轻松访问和改变对象的方式存储对象集合。
我最初的想法是使用一个数组,但是当我引用数组时,Swift会传回一个对象的副本。
var nodes:[SKNodes] = SKNodes();
nodes.append(SKNode());
nodes[0].position = CGPoint(x: 100, y: 100) //doesn't work
创建这样的东西的最佳做法是什么?
修改
由于打字错误,我没有工作,愚蠢的我。出于某种原因,我认为它不起作用,因为Swift会按值传递,我会得到数组中对象的副本而不是对象的引用。我现在已经知道Swift将对象和函数作为参考类型传递,基本上只有结构和枚举按值传递
Is Swift Pass By Value or Pass By Reference
var nodes:[SKNode] = SKNodes();
nodes.append(SKNode());
nodes[0].position = CGPoint(x: 100, y: 100) //Works!
答案 0 :(得分:2)
由于您将setGeneric(name = "mwe_fun"
, def = function(arg1) standardGeneric( "mwe_fun" ) )
setMethod(
f = "mwe_fun"
,signature = c("list"),
function(arg1){
if( all(lapply(a, typeof) == "double")) return("I am a numeric list")
if( all(lapply(a, typeof) == "character")) return("I am a character list")
})
附加到SKNode
,因此应该Array
而不是[SKNode]
[SKNodes]