คุณต้องการหยุดสวิตช์เมื่อใช้งานคืนหรือไม่?


112

ฉันสงสัยว่าฉันจำเป็นต้องใช้ฟังก์ชัน "break" ใน "สวิตช์" หรือไม่เมื่อใช้ "return"

function test($string)
{
  switch($string)
  {
    case 'test1':
      return 'Test 1: ' . $string;
    case 'test2':
      return 'Test 2: ' . $string;
  }
}

ฉันได้ลองแล้วและใช้งานได้ดีโดยไม่ต้อง "หยุดพัก" แต่ฉันต้องรู้ว่ามันปลอดภัยไหม ขอบคุณ.


1
จะเกิดอะไรขึ้นถ้า $ string = 'testx';
Jagadeesan

คำตอบ:


136

ใช่คุณสามารถใช้returnแทนbreak...

breakเป็นทางเลือกและใช้เพื่อป้องกันการ " ล้ม " จากข้อความอื่น ๆcaseทั้งหมด ดังนั้นreturnสามารถใช้ในลักษณะเดียวกันเมื่อreturnสิ้นสุดการทำงานของฟังก์ชัน

นอกจากนี้หากข้อความทั้งหมดของคุณcaseเป็นเช่นนี้:

case 'foo':
   $result = find_result(...);
   break;

และหลังจากswitchคำสั่งที่คุณมีการreturn $resultใช้return find_result(...);ในแต่ละคำสั่งcaseจะทำให้โค้ดของคุณอ่านง่ายขึ้นมาก

สุดท้ายนี้อย่าลืมใส่defaultเคส หากคุณคิดว่ารหัสของคุณจะไม่มีวันเข้าdefaultกรณีคุณสามารถใช้assertฟังก์ชันนี้ได้เพราะคุณไม่มีทางแน่ใจได้


ขอบคุณ Luzhin นั่นคือสิ่งที่ฉันคิด
EMC

17

คุณไม่จำเป็นต้องหยุดพักการส่งคืนจะหยุดการทำงานของฟังก์ชัน

(สำหรับการอ้างอิง: http://php.net/manual/en/function.return.phpพูดว่า:

หากเรียกจากภายในฟังก์ชันคำสั่ง return () จะสิ้นสุดการทำงานของฟังก์ชันปัจจุบันทันที

)


4

ไม่จำเป็นเพราะเมื่อมีการเรียกคีย์เวิร์ด return จะเป็นการระบุว่าฟังก์ชันเฉพาะที่เรียกสวิตช์ / เคสนั้นสิ้นสุดลงแล้ว


3

ไม่คุณไม่จำเป็นต้องbreakมีswitch caseคำชี้แจง breakเป็นตัวเลือกจริง แต่ใช้ด้วยความระมัดระวัง


2

คุณไม่จำเป็นต้องใช้ แต่ฉันขอแนะนำอย่างยิ่งให้ใช้เป็นแนวทางปฏิบัติที่ดี


6
ไม่มีประเด็นเนื่องจากผลตอบแทนมีอยู่อย่างชัดเจนโดยตัวมันเองในการดำเนินการ =) รหัสน้อยดีกว่า
EMC

7
รหัสน้อย! = ดีกว่า ไปเล่นกอล์ฟรหัส ฉันอยากจะอ่านโค้ดที่ชัดเจนและชัดเจนมากกว่าโค้ดที่ปรับให้เหมาะสมมากเกินไปเพียงเพื่อให้สามารถอยู่ในบรรทัดเดียวโดยเสียค่าใช้จ่ายในการอ่านและเข้าใจได้
Martin Bean

3
คุณสามารถโต้แย้งได้ทั้งสองวิธี คอมไพเลอร์บางตัวเตือนเกี่ยวกับโค้ดที่ไม่สามารถเรียกใช้งานได้หลังจากการส่งคืนในสวิตช์บางตัวไม่ทำเช่นนั้น มันเป็นความชอบส่วนบุคคลและสำหรับฉันอย่างน้อยมันก็มีสีสันตามจำนวนครั้งที่ฉันถูกกัดเพราะล้มทับสวิตช์ฉันก็ชอบที่จะเห็นการหยุดพัก
แฮร์รี่

2

Break เป็นเพียงคำเตือนที่ใช้เพื่อ จำกัด การควบคุมโครงสร้างของสวิตช์ไม่ให้ไปสู่กรณีอื่น ... ตัวอย่างเช่นหากคุณมีคำสั่ง case และค่า 3 กรณีสำหรับกรณีแรกและคุณใช้ case โดยไม่มีโครงสร้าง break แล้วทุกกรณีต่อไปนี้ จะถูกดำเนินการตรวจสอบเงื่อนไขที่พอใจสำหรับกรณีแรกเท่านั้น ... Return สามารถใช้ฟังก์ชัน asme ได้ดังนั้นจึงไม่เป็นปัญหาหากคุณใช้ return แทนการหยุดพักเนื่องจาก return จะเข้าควบคุมจากคำสั่ง switch case ซึ่งเป็นความต้องการในขณะนั้น ...... หวังว่ามันจะช่วย ....


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