리턴을 사용할 때 스위치를 중단해야합니까?


110

"return"을 사용할 때 "switch"기능에서 "break"를 사용해야하는지 궁금합니다.

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

나는 그것을 시도했고 "휴식"없이 잘 작동합니다. 하지만 이것이 안전한지 알아야합니다. 감사합니다.


1
$ string = 'testx'이면 어떻게 될까요?
Jagadeesan 2011-06-13

답변:


132

예, return대신 사용할 수 있습니다 break...

break선택 사항이며 다른 모든 명령문 에서 " 낙하 " 를 방지하는 데 사용됩니다 case. 따라서 return유사한 방식으로 사용할 수 있습니다.return 함수 실행이 끝나면 .

또한 모든 case진술이 다음과 같은 경우 :

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

그리고 그 후 switch당신은 그냥이 문 return $result사용하여 return find_result(...);각은 case코드가 훨씬 더 읽기 쉽게 만들 것입니다.

마지막으로 default케이스 를 추가하는 것을 잊지 마십시오 . 코드가 절대 default케이스에 도달하지 않을 것이라고 생각한다면 assert확신 할 수 없기 때문에 함수를 사용할 수 있습니다.


내가 생각했던 루진에게 감사합니다.
EMC


4

키워드 return이 호출되면 스위치 / 케이스가 호출 된 특정 기능이 종료되었음을 나타 내기 때문에 필요하지 않습니다.


3

아니, 당신은 필요하지 않습니다 breakA의 switch case문. 은 break실제로는 선택 사항이지만, 사용에주의.


2

필요하지는 않지만 어떤 경우에도 좋은 방법으로 사용하는 것이 좋습니다.


6
실행시 자체적으로 리턴이 명확하게 존재하므로 요점은 없습니다 =) 적은 코드가 더 좋습니다.
EMC

7
적은 코드! = 더 좋습니다. 코드 골프를 치십시오. 가독성과 이해하기 쉽도록 코드가 한 줄에있을 수 있도록 지나치게 최적화 된 코드보다는 읽기 쉽고 명시적인 코드를 선호합니다.
Martin Bean

3
이 두 가지 방법으로 논쟁 할 수 있습니다. 일부 컴파일러는 스위치에서 리턴 된 후 실행 불가능한 코드에 대해 경고하지만 일부는 그렇지 않습니다. 그것은 개인적인 취향이고, 적어도 내가 스위치를 통해 떨어지는 것에 의해 물린 횟수에 따라 색이 지정됩니다. 나는 휴식을 보는 것을 좋아합니다.
해리

2

Break는 스위치 구조의 제어가 다른 케이스로 이동하지 못하도록 제한하는 데 사용되는 경고문 일뿐입니다 ... 예를 들어 3 개의 case 문이 있고 값이 첫 번째 케이스이고 break 구조없이 case를 사용한 경우 다음 모든 경우 첫 번째 경우에만 조건이 충족 되더라도 실행됩니다 ... Return은 asme 기능을 수행 할 수 있으므로 break 대신 return을 사용하면 return이 switch case 문에서 제어권을 빼앗기 때문에 문제가되지 않습니다. 그 순간이 필요합니다 .. 도움이 되길 바랍니다 ....


1

return 은 제어를 호출하는 메서드에 다시 제공합니다. 여기서 break 는 switch 블록 다음의 첫 번째 명령어로 점프합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.