문제
F#에서 함수에 대한 참조를 다른 함수에 전달할 수 있나요?특히 다음과 같은 람다 함수를 전달하고 싶습니다.
foo(재미 x -> x ** 3)
좀 더 구체적으로 말하면, 내가 직접 작성한 함수에서 전달된 함수를 어떻게 참조하는지 알아야 합니다.
해결책
예, 가능합니다.그만큼 수동 이 예가 있습니다:
> List.map (fun x -> x % 2 = 0) [1 .. 5];;
val it : bool list
= [false; true; false; true; false]
다른 팁
함수는 F#의 일급 시민입니다.따라서 원하는 대로 전달할 수 있습니다.
다음과 같은 기능이 있는 경우:
let myFunction f =
f 1 2 3
그리고 에프 함수이면 반환 값은 다음과 같습니다. myFunction ~이다 에프 1,2,3에 적용됩니다.
람다 함수를 다른 함수에 전달하는 방법은 다음과 같습니다.
다음과 같은 사소한 기능이 있다고 가정해 보겠습니다.
let functionThatTakesaFunctionAndAList f l = List.map f l
이제 람다 함수와 목록을 전달할 수 있습니다.
functionThatTakesaFunctionAndAList (fun x -> x ** 3.0) [1.0;2.0;3.0]
우리 자신의 함수 내부 functionThatTakesaFunctionAndAList
람다 함수를 다음과 같이 참조할 수 있습니다. f
첫 번째 매개변수를 호출했기 때문에 f
.
물론 함수 호출의 결과는 다음과 같습니다.
float list = [1.0; 8.0; 27.0]
제휴하지 않습니다 StackOverflow