2011-09-21 3 views
0

나는 이런 식으로 뭔가 보이는 기능이 있습니다이PHP : 삼항 표현의 여러 문

function fun() 
{ 
    $pMana < 20 ? (error(1); return) : $pMana -= 20; //invalid syntax 
    //do stuff 
} 
같은

function fun() 
{ 
    $pMana < 20 ? error(1) : $pMana -= 20; 
    //do stuff 
} 

오차 함수가 호출 될 때 내가 원하는, 그것은 또한 기능을 종료, 뭔가를

저는 이처럼 하나 이상의 문장을 처리 할 수있는 삼항 식을 아직 보지 못했지만, 저는이 점을 처음 접했습니다. 가능한가? 이 상황에서

+0

는, ternarys에게 –

답변

3

사용 if 문.

삼항 연산자는 단일 값을 반환하므로 단일 명령문 제한이 적용됩니다. 또한 삼항 연산자에서 중요한 부작용이있는 함수를 사용하지 않아야합니다.

은 당신이 필연적으로 제안하면 가독성이 아닌 라인/문자 수에 초점을 맞추어야 매우 읽을 수없는 코드에 연결됩니다. 대부분의 코드는 더 많이 쓰여지고 편집됩니다.

편집 :

또한 유사한 목적에 assert를 사용할 수 있습니다. 주장은 일반적인 상황을 처리하는 데 사용해서는 안하지만

assert($pMana > 20); 
$pMana -= 20 

(예 : 사용자 입력 유효성 검사 등). 엄지 손가락 규칙은 실패한 어설 션은 항상 코드에 버그를 나타내야한다는 것입니다. 어설 션 표현은 "가능한 한 빨리 오류를 잡아라"라는 모토로 프로그램/프로그램 상태의 다른 부분으로부터의 입력에 대한 가정을 포함해야합니다 (이 경우 버그가 마나를 부정적으로 만들지 못하게하여 발급을 유발할 수 있습니다 나중에).

+0

'assert'가 아닌'if' 스택 코드의 디버그 버전을 사용하는 잘못된 생각 (만?). – hakre

+0

꽤 흥미 롭습니다. 디버그 전용으로 주장해야하는 이유는 무엇입니까? – dukevin

+0

@dukevin 정말 투명하지 않기 때문에 (특히 어설 션 처리의 경우). 그것은 단지 sugeston이었습니다 (OP의 게시물은 코드가 오류 상황을 처리 할 수 ​​있음을 제안합니다). –

0

일반적으로 삼항 연산자는 변수에 값을 할당하는 데 사용됩니다. 로직 문은 "if"와 함께 사용해야합니다.