>  기사  >  백엔드 개발  >  조건부 for 루프에 return 문이 없습니다.

조건부 for 루프에 return 문이 없습니다.

PHPz
PHPz앞으로
2024-02-09 12:30:09795검색

带条件的 for 循环中缺少 return 语句

PHP에서 for 루프는 코드 조각을 반복적으로 실행하는 데 사용되는 일반적인 반복 구조입니다. 그러나 때로는 조건부 for 루프에 return 문을 추가하는 것을 잊어버릴 수도 있으며, 이로 인해 프로그램이 정상적으로 결과를 반환하지 못하게 됩니다. 이 경우, PHP 편집자 Yuzai는 예상치 못한 오류를 방지하기 위해 적절한 반환 문이 루프에 추가되었는지 확인하기 위해 적시에 코드를 검사할 것을 권장합니다. 이를 통해 코드의 신뢰성과 정확성을 보장하고 프로그램의 효율성과 유지 관리성을 향상시킬 수 있습니다.

질문 내용

다음 코드를 작성할 때 컴파일러가 missing return statements 错误:

을 생성하는 것을 발견했습니다. 으아악

다음이 오류 없이 컴파일되는 경우입니다.

으아악

첫 번째 코드는 메소드가 반환에 실패하는 것이 불가능하기 때문에 논리적으로나 기술적으로 괜찮습니다. 컴파일러가 이 오류를 표시하는 이유가 있습니까? 아니면 일종의 논리나 버그가 누락된 걸까요?

해결 방법

@Cerise Limón의 의견을 답변으로 확장하면 "첫 번째 코드는 기술적으로 괜찮습니다"라는 주장은 거짓입니다.

Go 언어 사양에는 다음과 같이 나와 있습니다:

또한그리고 이것도:

(강조는 제가 추가했습니다)

첫 번째 함수의 코드를 검사하면 다음과 같은 사양 조건이 충족되지 않음을 알 수 있습니다.

으아악

함수에는 결과 매개변수가 있습니다(조건 int 返回值),因此必须以终止语句结束,但该函数的最终语句是 for이 있는 , 즉 는 사양에 정의된 "종료 문"이 아닙니다.

이상해 보일 수도 있지만 실제로는 기술적으로 정확합니다.

보너스 자료

그럼 두 번째 기능은 왜 괜찮은 걸까요?

으아악

이 경우 함수의 마지막 문은 for입니다. 여기서 는 무조건 이고 , 에는 for 루프를 참조하는 break 문 이 없어 종료 문의 언어 사양 정의를 충족합니다.

당신의 작업에는 논리가 있습니다.

무조건 for 语句包含 break 문에 break가 포함되어 있으면 루프 종료될 수 있으므로 함수에 return 문이 필요합니다.

무조건 for 语句包含 break (并且没有 return

break가 포함되어 있지 않고 return 문도 없으면 루프가 종료되지 않습니다(적어도 정상적인 실행의 결과는 아님). 경로)에는 함수 반환 값이 필요합니다. break 语句是否可达; 它们只需要存在。例如即使 break

break 문이 도달 가능한지 여부를 확인하기 위한 제어 흐름 분석이 없다는 점도 주목할 가치가 있습니다. 🎜그들은 존재해야 합니다🎜. 예를 들어 다음은 break에 확실히 액세스할 수 없는 경우에도 "반환 누락" 컴파일 오류를 발생시킵니다. 🎜 으아악

위 내용은 조건부 for 루프에 return 문이 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제