2012-12-20 73 views

回答

2

setter返回的值是賦值表達式的值。

舉例來說,如果你是做這樣的事情:

public var x(setX, getX): Int 

public function setX(val: Int): Int { 
    return 5; 
} 

static function main() { 
    neko.Lib.print(x = 2); // Prints 5 
} 

HAXE會打印出5.制定者返回一組表達式的值。當然,在這種情況下這是一個無意義的價值。

2

在現實世界中,它允許按值在分配執行復制,例如一種方式:

public var pos(set_pos, default):Point; 
function set_pos(newPos:Point) { 
    pos.x = newPos.x 
    pos.y = newPos.y; 
    return pos; 
} 

也實現制定者可能出現故障,例如,當有一個合理的回報和:

public var positiveX(default, set_positiveX):Int; 
function set_positiveX(newX:Int) { 
    if (newX >= 0) x = newX; 
    return x; 
} 

trace(x = 10); // 10 
trace(x = -4); // 10 
trace(x);  // 10 

雖然否則你會得到這樣的:

trace(x = 10); // 10 
trace(x = -4); // -4 
trace(x);  // 10 

這是什麼HAPP即使設置者不修改該值,也可以在AS3中使用。如果你不能做到這一點,顯然是第一,其中x = -4返回10是更好:)

3

小除了在這裏其他的答案,它可以讓你做到這一點:

x = y = z = 5; 
相關問題