2009-12-09 2 views

답변

11

"의미"에 따라 다릅니다.

가는 길에 처음으로 거북이가 Perl control structures are defined in terms of BLOCKs이고 (C와 유사)이 아닙니다. Perl의 BLOCK은 curlies로 구분됩니다.

길에 다음 거북이 아래로 블록 대신 문으로이 속하는 이유에 대해 래리 벽의 감정이 될 것입니다!

+0

첫 번째 대답은 실제로 질문을하는 것 같습니다. 두 번째 거북이를 더 자세히 묘사하십시오 - 이것이 더 흥미로운 해답이있는 곳입니다. –

+0

질문자가 분명히 충분했기 때문에이 답변을 변경하지 마십시오. 대신, 내가 물어 봐야한다고 생각하는 질문을 참조하십시오 : http://stackoverflow.com/questions/1876851/why-do-perl-control-statements-require-braces –

+1

왜 내가 "이 답변을 변경하는 귀찮을까요?" "왜?"라고 말하면서 신중하게 자격을 얻었습니다. 개미 수를 해석 할 수 있습니다. 아니요, 저는 "질문을 구걸"하지 않습니다. 왜냐하면 저는 암묵적으로 그 진리를 가정함으로써 어떤 명제를 세우려고하지 않기 때문에 이것은 "질문을 구걸하는 것"을 의미합니다."두 번째 거북이"에 관해서는 래리 월스 (Larry Wall)의 마음을 읽거나 통제 구조의 문보다는 BLOCK을 사용하는 디자인 결정의 근거에 대한 문서를 찾아야합니다. –

3

그들은 될 수 있습니다

$something ? function() : nope(); 

업데이트 : 조나단이 지적 하듯, 래리는 이렇게 말한다 때문에 더 일반적으로, 그것입니다.

function() if $something; 

nope() foreach @foo; 

function() while <FH>; 

심지어 : 중괄호 구문 밖으로 던져 질 수 있다는 것을 다른 경우가 있습니다

function() and nope() if $something; 
+0

또는 원래의 예를 사용 :'() 함수를 경우 $ 뭔가 나 싫다() 및이 매우 옳지 않다 '0 – mob

+0

: 예제에서'function()'과'nope()'는 그 자체의 범위에 있지 않습니다. 이들은 전체 조건부 또는 foreach와 동일한 범위에서 작동합니다. 나는 그것이 당신이 질문을 해석하는 방법에 달려 있다고 생각한다. 그는 "왜 중괄호없이 하나의 선형으로 하나의 선형을 가질 수 없는가?"또는 "왜 나는 한 줄에 모든 조건문을 가질 수 없는가"를 묻고있다. (당신은 후자에 대답한다). – Ether

1

일반적으로이 조건 연산자 사용합니다 :

뭔가를? function() : nope;

1

당신은 something ? function() : nope();을 의미합니까?

1

Perl은 항상 블록 주위에 중괄호를 필요로하기 때문에 문법이 다소 간소화됩니다.

if (something) { function(); } else { nope(); } 

을 또는 다른 제안으로 조건부 연산자를 사용

당신은 항상 작성해야합니다. 당신이 다른 사람을 필요로하지 않는 경우

1

, 당신은 줄 끝에있는 경우 또는하지 않는 한 사용하여 한 줄을 만들 수 있습니다. 예를 들어

:

function() if (something); 

또는

function() unless (something);