아래의 Swift 놀이터 코드 샘플의 addTwoNumbers 함수가 (Int, Int) -> Int의 함수로 "(+)"를 반환하고 나중에 두 개의 숫자를 함께 성공적으로 추가 할 수있는 방법을 완전히 망각했습니다. 단순히 "addTwoNumbers (2,2)"를 호출하면됩니다.스위프트 함수가 수학 연산자를 단독으로 반환 할 수있는 이유는 무엇입니까?
이 창조적 인 해결책은 거기에없는 것 같아서 스위프트 문서에서 설명을 찾을 수 없습니다. 나는 StackOverflow가 다른 질문에 대한 답과 비슷한 코드를 게시하는 것을 보았지만 은 왜 ""= (+)가 작동하는지 설명하지 못했다. 내가 뭘 놓치고 있니?
참고 : 저는 연산자가 퍼스트 클래스 함수 인 것을 알고 있습니다. 또한 고차 함수 개념을 이해합니다. 주제 샘플 (+)에 머물도록 코드 샘플을 줄였습니다. 귀하의 예제 아무것도에서
let addTwoNumbers: (Int, Int) -> Int = (+)
print(addTwoNumbers(5,3)) //8
간단한하시기 바랍니다 @Carcigenicate에 거의 상응하는 것을
는참고. 괄호 안에 +를 배치하면 그것을 객체로 만들 수 있습니까? 따라서 두 개의 인수로 호출하면 2 + 2와 같습니다. –
@Carcigenicate : https://math.stackexchange.com/questions/168378/operator-vs-function의 의견은 "모든 연산자는 함수입니다"라고 말합니다. 따라서 함수가 연산자 (이 경우 함수 (+)도)를 반환하면, print ("hello")처럼 add (2,2)를 통해 호출하는 유일한 방법이라고 가정하는 것이 안전할까요?)? 즉, 두 개의 인수를 취하는 + 함수를 호출하지만, + (2,2)를 입력하는 대신 제공된 코드 샘플에 따라 add (2,2)를 입력해야합니다. –
필자의 예제와 질문은 Higher Order Function 영역의 Swift 언어에 맞춰졌지만 어떤 언어로든 개념을 더 잘 이해할 수있는 방향을 제시해주었습니다. –