让我们考虑以下代码:
Class AClass : SKNode
{
func AFunction ()
{
// Some code
}
}
var AnArrayOfAClass[AClass]()
AnArrayOfAClass[x].AFunction
当我调用方法AFunction时,我怎么能在AFunction中知道索引的值(索引是我想要在上面的代码的最后一行中执行的调用示例中的x)?有没有办法避免将其作为AFunction的参数传递?
THX
学家
答案 0 :(得分:1)
我不确定这是否有效,因为我仍然不确定范围问题,但这会返回AnArrayOfAClass
中与对象相同的第一个值的索引调用函数:
class AClass {
func aFunction() {
// This maps AnArrayOfAClass to an array of Bool values depending
// on whether or not the value at the index === the object calling the function
// and then returns the index of the first true that it encounters:
if let index = find(anArrayOfAClass.map({ $0 === self }), true) {
println(index)
}
}
}
var anArrayOfAClass = [AClass]()
let aClass = AClass()
anArrayOfAClass += [aClass]
anArrayOfAClass[0].aFunction() // If everything worked, this should print "0",
// which is the correct index of aClass
我把所有东西都改成了camelCase,我认为这是合适的 - 没有违法行为:)