คำถามติดแท็ก switch-statement

ในการเขียนโปรแกรมคอมพิวเตอร์คำสั่ง switch, case, select หรือ inspect เป็นชนิดของกลไกการควบคุมการเลือกที่ใช้เพื่อเรียกใช้บล็อกเฉพาะของรหัสตามเนื้อหาตัวแปร

5
ถ้าเทียบกับ Switch Speed
โดยทั่วไปคำสั่ง Switch จะเร็วกว่าคำสั่ง if-else-if ที่เทียบเท่า (เช่นอธิบายไว้ในบทความนี้ ) เนื่องจากการปรับแต่งคอมไพลเลอร์ การเพิ่มประสิทธิภาพนี้ทำงานอย่างไร ใครมีคำอธิบายดีๆ

13
วิธีการย่อบล็อกกรณีสลับการแปลงตัวเลขเป็นชื่อเดือน
มีวิธีเขียนสิ่งนี้ในบรรทัดน้อยลง แต่ยังอ่านได้ง่ายหรือไม่? var month = ''; switch(mm) { case '1': month = 'January'; break; case '2': month = 'February'; break; case '3': month = 'March'; break; case '4': month = 'April'; break; case '5': month = 'May'; break; case '6': month = 'June'; break; case '7': month = 'July'; break; …

8
Java โดยใช้ enum พร้อมคำสั่ง switch
ฉันได้ดู Q & As ต่างๆเกี่ยวกับ SO คล้ายกับคำถามนี้ แต่ไม่พบวิธีแก้ปัญหา สิ่งที่ฉันมีคือ enum ซึ่งแสดงถึงวิธีต่างๆในการดูทีวีไกด์ ... ในApplicationคลาสNDroid static enum guideView { GUIDE_VIEW_SEVEN_DAY, GUIDE_VIEW_NOW_SHOWING, GUIDE_VIEW_ALL_TIMESLOTS } ... เมื่อผู้ใช้เปลี่ยนมุมมองตัวจัดการเหตุการณ์จะได้รับintจาก 0-2 และฉันต้องการทำสิ่งนี้ ... ในActivity onClick(DialogInterface dialog, int which)ตัวจัดการเหตุการณ์Android // 'which' is an int from 0-2 switch (which) { case NDroid.guideView.GUIDE_VIEW_SEVEN_DAY: ... break; } ฉันคุ้นเคยกับ C # enums …

4
ซอร์สโค้ดนี้กำลังเปิดใช้งานสตริงใน C มันทำได้อย่างไร?
ฉันกำลังอ่านโค้ดอีมูเลเตอร์บางอย่างและฉันได้ตอบโต้สิ่งที่แปลกอย่างแท้จริง: switch (reg){ case 'eax': /* and so on*/ } เป็นไปได้อย่างไร? ฉันคิดว่าคุณทำได้เฉพาะswitchในประเภทอินทิกรัล มีกลอุบายมาโครบางอย่างเกิดขึ้นหรือไม่?

2
การใช้งานคำสั่ง switch ()
ฉันสับสนเล็กน้อยเกี่ยวกับคำสั่ง switch ใน R เพียงแค่ googling ฟังก์ชั่นฉันได้รับตัวอย่างดังนี้: การใช้สวิตช์ทั่วไปคือการแยกสาขาตามค่าอักขระของอาร์กิวเมนต์ตัวใดตัวหนึ่งของฟังก์ชัน > centre <- function(x, type) { + switch(type, + mean = mean(x), + median = median(x), + trimmed = mean(x, trim = .1)) + } > x <- rcauchy(10) > centre(x, "mean") [1] 0.8760325 > centre(x, "median") [1] 0.5360891 > centre(x, "trimmed") …

3
ปลอดภัยหรือไม่ที่จะเปรียบเทียบอย่างเข้มงวดในคำสั่งสวิตช์ JavaScript
ฉันมีตัวแปรที่อาจเป็นบูลีนfalseหรือจำนวนเต็ม (รวม 0) ฉันต้องการวางไว้ในคำสั่งสวิตช์เช่น: switch(my_var){ case 0: // Do something break; case 1: // Do something else break; case false: // Some other code } ในการทดสอบของฉันใน Google Chrome ดูเหมือนว่าจะทำงานได้อย่างสมบูรณ์ แต่ฉันกังวลเล็กน้อยที่จะใช้เพราะฉันกลัวว่าในบางเบราว์เซอร์ถ้าmy_varเป็นfalseเช่นนั้นมันอาจดำเนินการในกรณีแรกตั้งแต่0 == falseนั้นมา ฉันแค่สงสัยว่ามีอะไรเป็นทางการใน JavaScript ที่บอกว่าคำสั่ง switch จะใช้การเปรียบเทียบที่เข้มงวดเช่นนั้น0 !== falseแต่ฉันไม่พบอะไรเลยและฉันไม่แน่ใจว่าสิ่งนี้จะทำงานได้ดีในเอ็นจิ้น JavaScript อื่นหรือไม่ มีใครทราบบ้างว่าการเปรียบเทียบที่ทำโดยคำสั่ง switch นั้นรับประกันว่าเข้มงวดหรือไม่?

6
การใช้ {} ในคำสั่งกรณี ทำไม?
ประเด็นในการใช้{และ}ในcaseคำสั่งคืออะไร? โดยปกติไม่ว่าจะมีกี่บรรทัดในcaseคำสั่งบรรทัดทั้งหมดจะถูกดำเนินการ นี่เป็นเพียงกฎเกี่ยวกับคอมไพเลอร์รุ่นเก่า / ใหม่กว่าหรือมีบางอย่างอยู่เบื้องหลัง? int a = 0; switch (a) { case 0:{ std::cout << "line1\n"; std::cout << "line2\n"; break; } } และ int a = 0; switch (a) { case 0: std::cout << "line1\n"; std::cout << "line2\n"; break; }

1
Elm Compiler ทำงานตลอดไปคอมพิวเตอร์เริ่มร้อน
ฉันไม่แน่ใจว่าอะไรเป็นสาเหตุของปัญหานี้ แต่ในโปรเจ็กต์ฉันกำลังสร้างคอมไพเลอร์ใช้เวลาหลายชั่วโมงในการคอมไพล์โมดูล ขนาดรวมของ codebase ของฉันคือ 352KB แต่ไม่มีโมดูลใดที่มีขนาดใหญ่เกิน 10KB ฉันใช้พอร์ต Native แต่มันเป็นเรื่องเล็กน้อยมาก ฉันแค่ดึงDate.now()มันมา มีอะไรที่รู้จักกันดีที่จะทำให้คอมไพเลอร์ elm ต้องใช้เวลาตลอดไปในการรวบรวม? ฉันไม่มีการอ้างอิงมากนัก แต่ฉันใช้ Html เป็นจำนวนมาก ฉันจะขอบคุณคำแนะนำใด ๆ เกี่ยวกับสิ่งที่จะทำให้เกิดสิ่งนี้ แก้ไข ดังนั้นปรากฎว่านิพจน์กรณีใหญ่จะทำให้เครื่องมือเพิ่มประสิทธิภาพใช้เวลานานโดยเท่ากับ 0.16 นี่คือการอภิปราย on Elm-พูดคุยนำขึ้นปัญหาและสรุปสาระสำคัญของการจับคู่กรณีที่น่ารังเกียจ ฉันเดาว่าต้องละเอียดและเก็บแครอทไว้ที่นั่นทำไมคอมไพเลอร์ของ elm ถึงใช้เส้นทางนี้สำหรับการจับคู่กรณี เกิดอะไรขึ้นที่นี่? เหตุใดคอมไพเลอร์จึงใช้เวลานานกว่าหนึ่งชั่วโมงในการปรับแต่งรูปแบบที่ตรงกันกว่า 60+ รูปแบบในคำสั่ง case

6
การประกาศและกำหนดค่าเริ่มต้นตัวแปรภายในสวิตช์ Java
ฉันมีคำถามบ้าๆเกี่ยวกับสวิตช์ Java int key = 2; switch (key) { case 1: int value = 1; break; case 2: value = 2; System.out.println(value); break; default: break; } กรณีที่ 1 - เมื่อkeyสองมันประสบความสำเร็จพิมพ์ค่าเป็น 2 กรณีที่ 2 - เมื่อฉันจะแสดงความคิดเห็นvalue = 2ในcase 2:มัน squawks บอกว่าค่าตัวแปรท้องถิ่นอาจจะไม่ได้รับการเริ่มต้น คำถาม: สถานการณ์ที่ 1: หากโฟลว์การดำเนินการไม่ไปที่case 1:(เมื่อ the key = 2) จะรู้ได้อย่างไรว่าประเภทของตัวแปรค่าเป็นintอย่างไร …

17
เหตุใดเราจึงต้องมีการแบ่งหลังจากคำชี้แจงกรณี
เหตุใดคอมไพเลอร์จึงไม่ใส่คำสั่งแบ่งโดยอัตโนมัติหลังจากบล็อกโค้ดแต่ละอันในสวิตช์ ด้วยเหตุผลทางประวัติศาสตร์หรือไม่? เมื่อใดที่คุณต้องการให้โค้ดหลายบล็อกดำเนินการ

17
การใช้คำสั่ง switch กับช่วงของค่าในแต่ละกรณี?
ใน Java เป็นไปได้ไหมที่จะเขียนคำสั่ง switch โดยที่แต่ละกรณีมีมากกว่าหนึ่งค่า ตัวอย่างเช่น (แม้ว่ารหัสต่อไปนี้จะไม่ทำงานอย่างชัดเจน): switch (num) { case 1 .. 5: System.out.println("testing case 1 to 5"); break; case 6 .. 10: System.out.println("testing case 6 to 10"); break; } ฉันคิดว่าสิ่งนี้สามารถทำได้ใน Objective C มีสิ่งที่คล้ายกันใน Java หรือไม่? หรือฉันควรใช้เพียงif, else ifงบแทน?

3
Swift: การทดสอบกับค่าทางเลือกในกรณีสวิตช์
ในสวิฟท์, วิธีการที่ฉันสามารถเขียนกรณีในงบสวิทช์ว่าการทดสอบเป็นค่าเปลี่ยนกับเนื้อหาของนั้นไม่จำเป็นกระโดดกว่าในกรณีที่จำเป็นมีnil? นี่คือวิธีที่ฉันคิดว่าสิ่งนี้อาจมีลักษณะ: let someValue = 5 let someOptional: Int? = nil switch someValue { case someOptional: // someOptional is non-nil, and someValue equals the unwrapped contents of someOptional default: // either, someOptional is nil, or someOptional is non-nil but someValue does not equal the unwrapped contents of someOptional } …

10
วิธีสร้าง C # Switch Statement ใช้ IgnoreCase
ถ้าฉันมีคำสั่ง switch-case ที่อ็อบเจ็กต์ในสวิตช์เป็นสตริงเป็นไปได้ไหมที่จะทำการเปรียบเทียบ IgnoreCase ฉันมีตัวอย่างเช่น: string s = "house"; switch (s) { case "houSe": s = "window"; } จะsได้ค่า "window"? ฉันจะแทนที่คำสั่ง switch-case ได้อย่างไรจึงจะเปรียบเทียบสตริงโดยใช้ IgnoreCase

15
เปลี่ยนกรณี: ฉันสามารถใช้ช่วงแทนตัวเลขเดียวได้ไหม
ฉันต้องการใช้สวิตช์ แต่ฉันมีหลายกรณีมีทางลัดหรือไม่? จนถึงตอนนี้ทางออกเดียวที่ฉันรู้และลองคือ: switch (number) { case 1: something; break; case 2: other thing; break; ... case 9: .........; break; } สิ่งที่ฉันหวังว่าจะทำได้มีดังนี้: switch (number) { case (1 to 4): do the same for all of them; break; case (5 to 9): again, same thing for these numbers; break; }

17
สลับคำสั่งกับผลตอบแทน - ความถูกต้องของรหัส
สมมติว่าฉันมีรหัสใน C โดยมีโครงสร้างประมาณนี้: switch (something) { case 0: return "blah"; break; case 1: case 4: return "foo"; break; case 2: case 3: return "bar"; break; default: return "foobar"; break; } เห็นได้ชัดว่าbreaks ไม่จำเป็นสำหรับรหัสที่จะทำงานอย่างถูกต้อง แต่ดูเหมือนว่าจะเป็นการปฏิบัติที่ไม่ดีถ้าฉันไม่ใส่ให้ฉัน คุณคิดอย่างไร? ลบออกได้ไหม หรือคุณจะเก็บไว้เพื่อเพิ่ม "ความถูกต้อง"?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.