帮我看看这部分代码:使用数组操纵由地址
class Ooo
attr_accessor :class_array
end
def func(ctx)
local_array = ctx.class_array
local_array = [4,3,5,5,6]
return
end
aaa = Ooo.new
func(aaa)
aaa.class_array => not [4,3,5,5,6] :-(
当阵列工作我推测,红宝石使用地址... 为什么这个代码不工作? 我想这样做(在C):
struct ctx
{
uint class_array[10000]
}
void func(struct *ctx)
{
uint* local_array = &ctx->class_array
local_array[0] = 4;
ctx->class_array[0] => 4
}
非常感谢!我只是明白!我会用'替换'而不是!但是,如果我想将另一个数组附加到local_array,我应该写什么代码?我的意思不只是local_array = [某事];如果我编写local_array + = another_array,那么ruby也会创建新的局部变量而不是使用ctx。变量? – user1119425 2012-01-14 21:45:16
@ user1119425因为您告诉它创建一个局部变量,然后将局部变量分配给其他东西。 – 2012-01-14 21:51:02
@ user1119425:'local_array + = another_array'与'local_array = local_array +另一个数组'相同,所以我的解释也适用于此。你可以使用'local_array.push(* another_array)',但这很丑陋,这是件好事。另外,如果这个答案对你有帮助,你将被邀请upvote并接受。 – 2012-01-14 21:54:59