Tags:

สมมุติผมสร้าง 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)

Get latest news from Blognone
By: PaPaSEK
ContributorAndroidWindowsIn Love
on 20 May 2012 - 23:36 #422247
PaPaSEK's picture

ไม่แน่ใจว่ามีคำสั่งตัวไหนที่ทำแบบอัตโนมัติหรือเปล่า .... สมมติว่าไม่มี

ในสมมติว่า addBox return ค่าเป็น object ชนิด Box

เราให้ใน Class box มี private static variable ตัวนึงที่จะถูก +1 ทุกครั้งเมื่อมีการ Instance Box

และทุกๆ ครั้งตัว instance ของ Box เองก็จะเอาค่า private static variable ไปเก็บเป็น member นึงของตัวเองด้วย

งงมั้ยครับ ... ผมพูดอะไรเนี่ย

By: sarunw
Contributor
on 20 May 2012 - 23:37 #422250

เอามาเก็บใน array สิครับ


My iOS apps
My blog

By: ellipsis
Windows Phone
on 21 May 2012 - 01:08 #422286 Reply to:422250

+1 แค่นั้นครับจบ ง่ายตรงไปตรงมา

By: 3000anv
iPhoneIn Love
on 20 May 2012 - 23:51 #422254

ทำได้แล้วครับขอบคุณมาก

รบกวนถามเรื่องการ วิธีการ return ที่ถูกต้องหน่อยครับผมพยายามอ่านหลายที่ก็ยังไม่เข้าใจว่าผิดตรงใหน

http://i1208.photobucket.com/albums/cc375/Bobokung111/ScreenShot2555-05-20at104420PM.png

อันนี้เป็น method ใช้จัดตำแหน่งของกล่องแยกตามเงื่อนไขต่างๆแล้วส่งค่า boxX , boxY กลับไปตามที่แยกแยะไว้ครับ
ผมติดตรง return (); ที่ไม่รู้จะเขียนให้ถูกต้องอย่างไร หาอ่านหลายที่แก้แล้วก็ไม่ผ่านซะที

By: rulaz07
ContributoriPhoneAndroidBlackberry
on 21 May 2012 - 12:05 #422377 Reply to:422254

การ return ใดๆก็ตามในทุกๆ method สามารถ return ได้แค่ค่าเดียวครับ

ถ้าอยาก return 2 ค่าต้องเอาอะไรมาเก็บ 2 ค่านั้นไว้เป็นก้อนเดียวก่อน แล้วค่อย return

By: kajokman
ContributorAndroidIn Love
on 21 May 2012 - 16:30 #422490 Reply to:422254
kajokman's picture

ถ้า boxX, boxY เป็น int ก็ลอง return new Point(boxX, boxY); ดูครับ

แต่ถ้าเป็น float ก็ใช้ return new PointF(boxX, boxY);

ถ้าเป็นอย่างอื่นก็ return เป็น array แล้วกัน

By: mr_tawan
ContributoriPhoneAndroidWindows
on 24 May 2012 - 12:22 #423674 Reply to:422254
mr_tawan's picture

บน C# (ใช่มั้ยครับ?) return ค่าได้แค่ตัวเดียวครับ (ภาษาอื่นอาจจะทำได้มากกว่า 1 แต่ผมนึกไม่ออกแฮะ ... ruby ป่าว ?)

ผมแนะเพิ่มละกันครับ สำหรับกรณีพวกการคำนวนตำแหน่ง X,Y ลองใช้คลาสที่ชื่อว่า Point หรือ PointF ดูนะครับ


  • 9tawan.net บล็อกส่วนตัวฮับ
By: fatrabb1t
AndroidWindows
on 21 May 2012 - 00:21 #422268

return ได้แค่ตัวแปรเดียวครับ case นี้ควรจะต้องสร้าง bean มาแล้วโยนค่า bean เข้ามาใน method เอา

By: ellipsis
Windows Phone
on 21 May 2012 - 01:11 #422287

ลองรีเทินเป็นออบเจ็กดูครับ

By: natal2u
AndroidWindowsIn Love
on 21 May 2012 - 09:45 #422319

ถ้าอยากได้ออกมาสองค่า
ลองเอา out มาใช้ดูครับ
private type BlahBlah(out double x,out double y)
{
x = 0;
y = 0;
}
ไม่รู้ตรงที่อยากได้ป่าว

By: vittee
AndroidRed HatUbuntuWindows
on 22 May 2012 - 10:16 #422692
vittee's picture

ลองใช้ Factory Method ดูครับ ด้านในก็จะมีตัวนับ คอย assign ID ให้กับ Object ที่ create ออกมาได้

ส่วนการ return หลายๆค่า ให้ลอง return เป็น Complex type (Object, Record, Struct) ครับ จริงๆแล้วคือ return ค่าเดียวนั่นแหละ แต่มีค่าย่อยๆผูกติดมาด้วย

หรือจะใช้ส่งออกมาทาง parameter reference ก็ได้ครับ อันนี้แล้วแต่ภาษา
แต่ผมชอบแบบ return มากกว่า มันควบคุม flow ของโปรแกรมง่ายกว่า

By: mr_tawan
ContributoriPhoneAndroidWindows
on 25 May 2012 - 15:28 #424204 Reply to:422692
mr_tawan's picture

ที่จริงแค่ใช้ตัวแปร static ตัวเดียวเป็นตัวเก็บว่า id ปัจจุบันเป็นตัวที่เท่าไหร่ คอย assign ค่าให้ id ของ object ใน constructor แล้วก็เพิ่ม id ปัจจุบันเข้าไปอีก 1 ก็ใช้ได้แล้วล่ะครับ


  • 9tawan.net บล็อกส่วนตัวฮับ