สมมุติผมสร้าง Object ขึ้นมาดังนี้
addBox(a,w,h);
addBox(b,w,h);
addBox(c,w,h);
ผมต้องการรับค่า ID ของ object เพื่อนำไปใช้ จัดตำแหน่ง Box โดยอัตโนมัติ
addBox(a,w,h);
เป็น object ที่ถูกสร้างตัวที่เท่าใหร่ (มนุษย์รู้ว่าเป็นตัวที่ 1)
addBox(b,w,h);
เป็น object ที่ถูกสร้างตัวที่เท่าใหร่ (มนุษย์รู้ว่่าเป็นตัวที่ 2)
addBox(c,w,h);
เป็น object ที่ถูกสร้างตัวที่เท่าใหร่ (มนุษย์รู้ว่่าเป็นตัวที่ 3)
ไม่แน่ใจว่ามีคำสั่งตัวไหนที่ทำแบบอัตโนมัติหรือเปล่า .... สมมติว่าไม่มี
ในสมมติว่า addBox return ค่าเป็น object ชนิด Box
เราให้ใน Class box มี private static variable ตัวนึงที่จะถูก +1 ทุกครั้งเมื่อมีการ Instance Box
และทุกๆ ครั้งตัว instance ของ Box เองก็จะเอาค่า private static variable ไปเก็บเป็น member นึงของตัวเองด้วย
งงมั้ยครับ ... ผมพูดอะไรเนี่ย
เอามาเก็บใน array สิครับ
My iOS apps
My blog
+1 แค่นั้นครับจบ ง่ายตรงไปตรงมา
ทำได้แล้วครับขอบคุณมาก
รบกวนถามเรื่องการ วิธีการ return ที่ถูกต้องหน่อยครับผมพยายามอ่านหลายที่ก็ยังไม่เข้าใจว่าผิดตรงใหน
http://i1208.photobucket.com/albums/cc375/Bobokung111/ScreenShot2555-05-20at104420PM.png
อันนี้เป็น method ใช้จัดตำแหน่งของกล่องแยกตามเงื่อนไขต่างๆแล้วส่งค่า boxX , boxY กลับไปตามที่แยกแยะไว้ครับ
ผมติดตรง return (); ที่ไม่รู้จะเขียนให้ถูกต้องอย่างไร หาอ่านหลายที่แก้แล้วก็ไม่ผ่านซะที
การ return ใดๆก็ตามในทุกๆ method สามารถ return ได้แค่ค่าเดียวครับ
ถ้าอยาก return 2 ค่าต้องเอาอะไรมาเก็บ 2 ค่านั้นไว้เป็นก้อนเดียวก่อน แล้วค่อย return
ถ้า boxX, boxY เป็น int ก็ลอง return new Point(boxX, boxY); ดูครับ
แต่ถ้าเป็น float ก็ใช้ return new PointF(boxX, boxY);
ถ้าเป็นอย่างอื่นก็ return เป็น array แล้วกัน
บน C# (ใช่มั้ยครับ?) return ค่าได้แค่ตัวเดียวครับ (ภาษาอื่นอาจจะทำได้มากกว่า 1 แต่ผมนึกไม่ออกแฮะ ... ruby ป่าว ?)
ผมแนะเพิ่มละกันครับ สำหรับกรณีพวกการคำนวนตำแหน่ง X,Y ลองใช้คลาสที่ชื่อว่า Point หรือ PointF ดูนะครับ
return ได้แค่ตัวแปรเดียวครับ case นี้ควรจะต้องสร้าง bean มาแล้วโยนค่า bean เข้ามาใน method เอา
ลองรีเทินเป็นออบเจ็กดูครับ
ถ้าอยากได้ออกมาสองค่า
ลองเอา out มาใช้ดูครับ
private type BlahBlah(out double x,out double y)
{
x = 0;
y = 0;
}
ไม่รู้ตรงที่อยากได้ป่าว
ลองใช้ Factory Method ดูครับ ด้านในก็จะมีตัวนับ คอย assign ID ให้กับ Object ที่ create ออกมาได้
ส่วนการ return หลายๆค่า ให้ลอง return เป็น Complex type (Object, Record, Struct) ครับ จริงๆแล้วคือ return ค่าเดียวนั่นแหละ แต่มีค่าย่อยๆผูกติดมาด้วย
หรือจะใช้ส่งออกมาทาง parameter reference ก็ได้ครับ อันนี้แล้วแต่ภาษา
แต่ผมชอบแบบ return มากกว่า มันควบคุม flow ของโปรแกรมง่ายกว่า
ที่จริงแค่ใช้ตัวแปร static ตัวเดียวเป็นตัวเก็บว่า id ปัจจุบันเป็นตัวที่เท่าไหร่ คอย assign ค่าให้ id ของ object ใน constructor แล้วก็เพิ่ม id ปัจจุบันเข้าไปอีก 1 ก็ใช้ได้แล้วล่ะครับ