วันนี้ทำงานแล้วเจอเรื่องนี้ติดต่อกันเลยคันไม้คันมือจดไว้หน่อยดีกว่า ใน Flex มี for ให้ใช้อยู่สองแบบคือ แบบที่เห็นในภาษาซีทั่วไป for( initial, condition, post operation) กับแบบที่เป็น iterator เหมือนของ php หรือ python คือ for … ( received in list ) แต่แบบแรกคิดว่าคงเป็นกันหมดแล้ว ไม่เขียนถึงละกัน แต่แบบหลังนี่สิ ที่น่าเล่นเพราะมันดันใช้ได้อีกสองแบบ เพื่อเอาค่าออกจาก list
ในภาษา php เวลาใช้ for-in เพื่อเอาค่าออกมาสามารถกำหนดไปได้เลยว่า ตัวแปรไหนจะใช้เพื่อรับ key ตัวแปรไหนจะใช้สำหรับรับ value เช่น
$dictionary = array("pFz" => 80, "llun" => 23, "sourcode" => 25);
foreach ($dictionary as $key=>$value) {
print "$key -> $value";
}
แต่สำหรับ actionscript กลับต้องใช้แยกกันคือ for-in สำหรับวนอ่านค่า key และ foreach สำหรับวนอ่านค่า value เช่น
var dictionary:Dictionary = new Dictionary()
dictionary["pFz"] = 80
dictionary["llun"] = 23
dictionary["sourcode"] = 25
for each (var value:Number in dictionary) {
print value
}
for (var key:String in dictionary) {
print key
}
จริงๆ จะใช้ for-in วนหาเพื่อเอา key แล้วไปเอาจาก dictionary อีกทีเลยก็ได้ เพื่อให้เหมือนกับ php แต่ที่อยากจดไว้ก็คือ มันใช้แยกแตกต่างกันยังไงเท่านั้นแหละ ;p (เหมือน python จะทำกลับกันคือมีแต่ foreach เอา value อยากได้ key ต้องใช้ enumerate แล้วทำให้มันเป็น tuple)
ปอลอ. ตัวเลขในข้อมูลตัวอย่างคิดว่าเอามาจากเลขจริงอยู่ค่าเดียวคือค่าที่ใส่ให้ pFz ;p