幫我看看這部分代碼:使用數組操縱由地址
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