호출 가능한 객체
Callable object컴퓨터 프로그래밍에서 호출 가능한 물체는 함수처럼 불릴 수 있는 물체다.
다른 언어로 된
C++인
- 기능에 대한 포인터
- 멤버 함수에 대한 포인터.
- 펑터;
- 람다 표현
std::function
서명과 일치하는 호출 가능한 개체를 저장할 수 있는 템플릿 클래스.
C++에서 함수 호출 연산자를 오버로드하는 모든 클래스operator()
함수 호출 구문을 사용하여 호출할 수 있다.
#include <아이오스트림> 구조상의 푸 { 공허하게 하다 운영자()() 경시하다 { 찌꺼기::뻐드렁니가 나다 << "불러."; } }; 인트로 본래의() { 푸 foo_fo_fo.; foo_fo_fo.(); // 이렇게 하면 "Call"이 화면에 출력된다. }
인 C#
PHP에서
PHP 5.3+는 예를 들어 에 대한 파라미터로 사용할 수 있는 1급 기능을 가지고 있다.usort()
함수:
a달러 = 배열하다(3, 1, 4); usort(a달러, 기능을 하다 ($x, $y) { 돌아오다 $x - $y; });
또한 PHP 5.3+에서는 마법을 추가하여 사물을 불활성화 할 수 있다.__invoke()
해당 클래스에 대한 방법:[1]
계급 빼기 { 공중의 기능을 하다 ____($x, $y) { 돌아오다 $x - $y; } } a달러 = 배열하다(3, 1, 4); usort(a달러, 새로운 빼기());
인 파이톤
Python에서는 다음이 있는 모든 개체__call__()
함수 호출 구문을 사용하여 메소드를 호출할 수 있다.
계급 푸: 반항하다 __call__(자아의): 인쇄하다("불러.") foo_fo_fo. = 푸() foo_fo_fo.() # 화면에 "콜" 출력
다른 예:
계급 축전기: 반항하다 __init___(자아의, n): 자아의.n = n 반항하다 __call__(자아의, x): 자아의.n += x 돌아오다 자아의.n
인 다트
다트 클래스가 함수처럼 호출되도록 하려면call()
방법의
계급 워너비기능 { 부르다(끈 a, 끈 b, 끈 c) => '$a $b $c!'; } 본래의() { 시합을 하다 wf = 새로운 워너비기능(); 시합을 하다 밖으로 = wf("안녕","거기","강"); 인쇄하다('$밖으로'); }
인 스위프트
Swift에서 호출 가능한 객체는 다음을 사용하여 정의된다.callAsFunction
.[4]
구조상의 CallableStruct { 시합을 하다 가치를 매기다: 인트 펑크 callAsFunction(_ 번호를 붙이다: 인트, 저울: 인트) { 인쇄하다(저울 * (번호를 붙이다 + 가치를 매기다)) } } 하게 하다 호출할 수 있는 = CallableStruct(가치를 매기다: 100) 호출할 수 있는(4, 저울: 2) 호출할 수 있는.callAsFunction(4, 저울: 2) // 두 기능 모두 인쇄 208을 호출한다.
참조
- ^ Magic Methods에 대한 PHP 문서
- ^ Bösch, Florian. "What is a "callable" in Python?". StackOverflow.com. Retrieved 24 September 2017.
- ^ "A Tour of the Dart Language". www.dartlang.org. Retrieved 2019-03-25.
- ^ "Declarations — The Swift Programming Language (Swift 5.6)". docs.swift.org. Retrieved 2022-02-28.
외부 링크