파이프 라인을 선언하는 방법이 중요합니까? 저는 세 가지 방법을 알고 있습니다 :파이프 라인을 어떻게 선언해야합니까?
let hello name = "Hello " + name + "!"
let solution1 = hello <| "Homer"
let solution2 = "Homer" |> hello
어느 쪽을 선택하겠습니까? solution1 또는 solution2 - 이유는 무엇입니까?
파이프 라인을 선언하는 방법이 중요합니까? 저는 세 가지 방법을 알고 있습니다 :파이프 라인을 어떻게 선언해야합니까?
let hello name = "Hello " + name + "!"
let solution1 = hello <| "Homer"
let solution2 = "Homer" |> hello
어느 쪽을 선택하겠습니까? solution1 또는 solution2 - 이유는 무엇입니까?
파이프 전달 연산자 |>
은 함수 구성 및 형식 유추에 도움이됩니다. 이 함수를 사용하면 함수의 매개 변수를 다시 배열 할 수 있으므로 함수의 마지막 매개 변수를 먼저 넣을 수 있습니다. 이렇게하면 매우 읽기 쉬운 함수를 연결할 수 있습니다 (C#의 LINQ와 유사). 귀하의 예는 이것의 힘을 보여주지 못합니다. 여러 기능을 연속적으로 "파이프 라인"으로 변환 할 때 정말 빛납니다.
사용 |>
하면 쓸 수 체인 :
는 파이프 뒤로 운영자 <|
의 장점은 당신에게 브래킷을 많이 절약 할 수 있도록이 연산자 우선 순위를 변경한다는 것입니다
let createPerson n =
if n = 1 then "Homer" else "Someone else"
let hello name = "Hello " + name + "!"
let solution2 =
1
|> createPerson
|> hello
|> printf "%s"
: 함수 인수는 일반적으로 왼쪽 평가 맞습니다.
<|
을 사용하면 한 함수의 결과를 다른 함수에 전달하려는 경우 대괄호가 필요하지 않습니다. 예를 들어이 함수를 실제로 활용하지는 않습니다.
이 동등한 것 : - | '유용한 것
let createPerson n =
if n = 1 then "Homer" else "Someone else"
let hello name = "Hello " + name + "!"
let solution3 = hello <| createPerson 1
let solution4 = hello (createPerson 1)
대신'let solution5 = createPerson 1 | hello' 대신'Exception()'을 사용할 수 있습니까? – ebb
@ebb : 더 좋은 예제는'1 |> createPerson |> hello' 일 것입니다 - 예제가 너무 효과적이지만'1'은 상수이므로 – BrokenGlass
상수를 사용하지 않고 예제를 사용 하시겠습니까? – ebb