2013-05-31 4 views
0

스타일 질문이 있습니다. 그것은 영원히 이후로 내가 해왔 던 일이지만, 왜, 정확히 알 수는 없습니다. ,다른 함수에서 함수를 인수로 호출하는 이유는 무엇입니까?

foo(bar()) 

어떤 이유
var bar=bar() 
foo(bar) 

과 같다 :

내가 사용했던 대부분의 언어에서

, 당신은 다른 방법에 대한 인수로 값을 반환하는 메서드를 호출 할 수 있습니다 후자는보기 흉한 것처럼 보인다. 왜 그런가요? 더 읽기 쉽고, 효율적이며, 깨끗한가?

+0

중복에 대해 죄송합니다. 몇 가지 검색을 시도해 무언가가 이미 있었는지 알기는했지만 분명히 열심히 보지 않았습니다. : [ – whiterook6

답변

1

반드시 같은 것은 아닙니다.

foo(bar()); 

은 다음 retBar,하고 반환 어떤 가게가 argumnet로 retBar와 foo는 전화, retBar는, 다음 줄을 호출 initalize "

var retBar = bar(); 
foo(retBar); 

수단"을 호출 바, 파이프 인수 푸하는 "의미 . "

값 비싼 변수를 선언하는 방법에 따라 후자는 더 큰 메모리 풋 프린트 또는 느린 런타임을 가질 수 있습니다.

그래도 실제로는 언어에 따라 두 가지 추가 진술이 추가되어 코드가 덜 깨끗합니다. 방법 2를 수행하는 유일한 시간은 디버거에서 엿보는 경우에만 bar()의 값을 사용해야하는 이유입니다.

+0

나는 마지막 비트 유지 참조를 사용하면 디버깅을 중단 할 수 있습니다. – whiterook6

0

나는 당신이 말한 모든 것의 조화를 느낍니다. 전자는

a부터 유리합니다. 동일한 결과를 얻기 위해 추가 변수의 선언을 방지합니다.

b. 그것보다 청소기 이래 더 쉽게/이해 읽을

var에없이 accountBalance = SUM (principalAmount + calculateInterest())

보다

VAR varCalculateInterest = calculateInterest();

VAR의없이 accountBalance = SUM (principalAmount + calculateInterest())

하였다. 재귀와 같은 기능을 사용하는 경우 이전 버전을 사용하게됩니다. 중간 결과를 저장하려면 많은 임시 변수가 필요합니다. 아래 예를 참조하십시오.

반송 연결 (quicksort (less), pivot ', quicksort (greater))

관련 문제