나는 그것이 obj.func1().func2()
메쏘드 체인이라고 불리는 것을 알고 있지만, 기술적 용어는 다음과 같습니다.
func1(func2(), func3());
함수 반환이 다른 함수의 인수로 사용되는 경우
obj.func1()
가있는 객체를 항상 반환 한다고 확신하지 않는 한 매우 까다로운 소리 func2()
입니다.
나는 그것이 obj.func1().func2()
메쏘드 체인이라고 불리는 것을 알고 있지만, 기술적 용어는 다음과 같습니다.
func1(func2(), func3());
함수 반환이 다른 함수의 인수로 사용되는 경우
obj.func1()
가있는 객체를 항상 반환 한다고 확신하지 않는 한 매우 까다로운 소리 func2()
입니다.
답변:
나는 그것이 기능 구성이라고 생각하지 않습니다. 함수 구성은 f . g . h
하스켈 에서와 같이 둘 이상의 함수를 가져 와서 새로운 함수로 바꾸는 것을 의미합니다 . 이 시점에서 함수가 호출되지 않습니다.
개인적으로 필자는 func1(func2(), func3())
"중첩 함수 호출" 과 같은 구문을 참조 할 것 입니다.
f(g())
것은 f()
첫 번째 인수에 대한 표현식 으로 호출 하는 것이므로 함수 호출 g()
이 표현식으로 규정됩니다. 그러나 이름이 있어야한다면이 이름은 비슷합니다.
수학에서는 함수 구성 이라고 합니다 . 그래도 프로그래밍에 적용되는 용어를 들어 본 적이 없다고 생각합니다. 몇 가지 이유로 사용법을 크게 피하기 때문일 수 있습니다. 컴파일러가 func2 이전에 func3을 자유롭게 평가할 수 있기 때문에 함수에 부작용이있을 때 이상한 버그가 발생할 수 있습니다. 중단 점을 설정하거나 중간 결과를 인쇄 할 수 없기 때문에 디버그하기가 더 어려우며 대부분의 사람들은 읽기가 더 어렵습니다.
printf("%d %d\n", strlen(a), strlen(b));
중간 변수 대신 코드를 작성하는 것은 드문 일이 아닙니다 .
func1(func2(func3(x)))
. 또는 기술적으로, 그것은을 의미 기능 하는 경우 : 스스로 g(x) = f1(f2(f3(x)))
다음 g
( 하지 g(x)
)의 구성은 f1
, f2
하고 f3
. "함수 구성"이라는 질문에서 구조를 호출 할 수있는 방법을 볼 수는 있지만 수학적인 의미에서이 용어를 매우 이례적으로 사용하는 것으로 나타났습니다.
@Karl Bielefeldt가 지적한 것처럼 수학에서 함수 구성이라고합니다.
프로그래밍에는이 용어에 대한 기술적 용어가 없습니다. 그리고 이것이 정상적이며 직교 한다는 것을 나타 내기 때문에 이것이 좋은 것이라고 생각합니다 .
프로그래밍 언어에서의 직교성은 문맥과 무관하게 명령어 / 연산을 사용할 수 있음을 의미합니다 . 예를 들어 다음과 같은 방법으로 함수 / 메소드를 호출 할 수 있습니다.
f1()(f2(), f3());
x = y + f4();
if ( f5() && !f6() ) doSomething();
f7() = f8() + f9(); // in C++ when a function returns a reference
x = f10() ? f11(f12(f13(x))) : f14();
당신은에 프로그래밍에 직교성에 대한 자세한 내용을보실 수 있습니다 위키 백과 , 그리고 거기에 질문에 유래에 이에.
나는 정말 용어가 좋지는 않지만 며칠 전에 Higher order functions 이라는 용어를 읽은 기사를 읽었으며 Wikipedia 당 정의에 대한 개요가 있습니다.
http://en.wikipedia.org/wiki/Higher-order_function
수학 및 컴퓨터 과학에서 고차 함수, 함수 형태 또는 함수는 다음 중 하나 이상을 수행하는 함수입니다.
- 하나 이상의 기능을 입력으로 사용
- 함수를 출력하다
다른 모든 기능은 1 차 기능입니다. 수학에서 고차 함수는 연산자 또는 함수라고도합니다. 미적분학의 미분은 함수를 다른 함수에 매핑하기 때문에 일반적인 예입니다.
따라서이 시나리오에서는 적어도 하나의 기능을 입력 / 매개 변수로 사용하기 때문에 고차 함수로 간주됩니다.
func1(func2, func3)
. 괄호가없는 것을 주목하십시오.
obj.func1().func2() is called method chaining
-수정 : 열차 난파선이라고합니다.