這段代碼是用簡單的ActionScript編寫的,但我假設我的這個問題會發生在所有具有布爾數據類型的語言中。切換布爾問題
我只是簡單地點擊舞臺,以便我的布爾變量反轉其值,並跟蹤/打印/記錄它的新值。然而,它總是追蹤真實,而不是在每次點擊鼠標時切換真與假。
我在做什麼錯?
var myBool:Boolean;
stage.addEventListener(MouseEvent.CLICK, mouseClickHandler);
function mouseClickHandler(evt:MouseEvent):void
{
changeBoolean(myBool);
}
function changeBoolean(boolean:Boolean):void
{
boolean = !boolean;
trace(boolean);
}
啊......是有道理的。因爲我使用了許多布爾變量,我只是在我傳遞它的值時將布爾值顛倒過來:changeBoolean(myBool =!myBool); – TheDarkIn1978 2010-09-12 00:53:59
我發現這令人困惑,因爲如果我將其他對象(如顯示對象)傳遞給函數,那麼我可以更改它們。這是否意味着原始數據類型僅作爲它們的值傳遞給函數,而其他非原始數據類型是作爲它們自己傳遞的?這是一般規律嗎? – TheDarkIn1978 2010-09-13 03:28:56
是的,值類型是通過值傳遞的,而引用類型是作爲引用傳遞的(並且在函數內部對它們做的所有操作都會影響它們在函數之外)。引用類型通常是類,而值類型通常是系統類型(布爾型,整型,字符型等),枚舉和結構。 – 2010-09-13 07:45:51