2014-11-28 2 views
0

아래의 Perl 스크립트에서 보여주는 것처럼, $_은 목록 컨텍스트에서 역순으로 기본 매개 변수로 전달되지 않습니다. 왜 그냥 $ _을 기본 매개 변수로 받아들이고 변환을 나열하는 스칼라를 사용하지 않습니까? 두 문맥에서 함수의 기본 매개 변수에 대한 규칙은 무엇입니까? Perl의 목록 컨텍스트에서 역순 함수의 기본 매개 변수는 무엇입니까?

나는 (목록 역 정렬) 목록 모드에서 작동 기능에 대한 기본 매개 변수해야 @_ 언급이 post를 보았다, 그러나 나는 아래의 코드에 @_ = somelist를 앞에 추가 한 후에는이 경우 될 것 같지 않습니다 . "변환을 나열하는 스칼라 '에 의해

$_ = "dlrow ,olleH"; 
print reverse $_; # outputs: dlrow ,olleH 

난 당신이 무슨 뜻인지 모르는 : 실제로 아무것도 할 것이기 때문에

$_ = "dlrow ,olleH"; 
print reverse;       # No output, list context 
print scalar reverse;     # Hello, world 
+0

StackOverflow에서'perldoc reverse'와 임의의 임의의 게시물을 선택할 때마다 매번 perldoc을 선택하십시오. – tjd

+0

@tjd, 예약 페이지를 읽었지만 스칼라 컨텍스트의 기본 매개 변수 만 언급합니다. 나는 어떤 부분을 놓칠지도 모른다. – Thomson

+1

목록 컨텍스트에 정의 된 기본 입력이 없기 때문입니다. 당신이 언급 한 질문에서 받아 들여지는 대답은 환상 이상이었습니다. – tjd

답변

2

$_은리스트 문맥에서 역에 대한 이상한 기본이 될 것입니다 .

목록의 대 스칼라 문맥에 대한 일반 규칙이없는 것처럼 함수의 기본 매개 변수에 대한 일반적인 규칙은 없습니다. 각 기능에 대한. 서를 참조해야합니다.

+0

"스칼라에서 목록으로의 변환"의 경우 기본 _ 매개 변수로 $ _를 (를) 수락하고 함수가 목록을 필요로하면 목록으로 변환하십시오. – Thomson

+0

@Thomson,'$ _'은 정의상 스칼라입니다. 어떤 식으로 "목록으로 변환 하시겠습니까?" 공백으로 분할 하시겠습니까? null 패턴으로 분할 하시겠습니까? 배열 참조를 취소 하시겠습니까? – cjm

+0

@cjm, 간단한 변환, $ _ to ($ _) – Thomson

관련 문제