ในคลาส ActionScript3 ของฉัน ฉันสามารถมีคุณสมบัติที่มี getter และ setter ได้หรือไม่
ในคลาส ActionScript3 ของฉัน ฉันสามารถมีคุณสมบัติที่มี getter และ setter ได้หรือไม่
คำตอบ (3)
โอเค คุณสามารถใช้ไวยากรณ์ getter/setter พื้นฐานสำหรับคุณสมบัติใดๆ ของคลาส AS3 ของคุณได้ ตัวอย่างเช่น
package {
public class PropEG {
private var _prop:String;
public function get prop():String {
return _prop;
}
public function set prop(value:String):void {
_prop = value;
}
}
}
ใช่ คุณสามารถสร้างฟังก์ชัน getter และ setter ภายในคลาส AS3 ได้
ตัวอย่าง:
private var _foo:String = "";
public function get foo():String{
return _foo;
}
public function set foo(value:String):void {
_foo= value;
}
ข้อมูลเพิ่มเติมเกี่ยวกับ getters และ setters สามารถพบได้ ที่นี่
getter คือฟังก์ชันที่มีค่าส่งคืนขึ้นอยู่กับสิ่งที่เราส่งคืน ตัวตั้งค่าจะมีพารามิเตอร์ตัวเดียวเสมอ เนื่องจากเราให้ค่าใหม่แก่ตัวแปรผ่านพารามิเตอร์
ก่อนอื่นเราสร้างอินสแตนซ์ของคลาสที่มี getter และ setter ในกรณีของเราคือ "a" จากนั้นเราจะเรียกตัวตั้งค่า หากเราต้องการเปลี่ยนตัวแปร และใช้ไวยากรณ์จุด เราจะเรียกใช้ฟังก์ชันตัวตั้งค่า และด้วยตัวดำเนินการ = เราจะเติมพารามิเตอร์ ในการรับค่าของตัวแปร เราใช้ getter ในลักษณะเดียวกันดังที่แสดงในตัวอย่าง (a.myVar) ต่างจากการเรียกใช้ฟังก์ชันทั่วไป เราละเว้นวงเล็บ อย่าลืมเพิ่มประเภทการส่งคืนมิฉะนั้นจะเกิดข้อผิดพลาด
บรรจุุภัณฑ์ {
import flash.display.Sprite;
import flash.text.TextField;
public class App extends Sprite
{
private var tsecField:TextField;
private var tField:TextField;
public function App()
{
myTest();
}
private function myTest():void
{
var a:Testvar = new Testvar();
tField = new TextField();
tField.autoSize = "left";
tField.background = true;
tField.border = true;
a.mynewVar = "This is the new var.";
tField.text = "Test is: "+a.myVar;
addChild(tField);
}
}
}
นำเข้า flash.display.Sprite;
นำเข้า flash.text.TextField;
คลาส Testvar ขยายสไปรท์ { การทดสอบ var สาธารณะ: String;
public function Testvar()
{
}
public function set mynewVar(newTest:String):void
{
test = newTest;
}
public function get myVar():String
{
return test;
}
}