데이터 액세스를 쉽게 조롱하고 액세스 할 데이터를 결정하기 위해 매개 변수를 허용하는 서명을 제공하기 때문에 이와 같은 함수를 작성하는 경우가 많습니다.
public static string GetFormattedRate(
Func<string, RateType>> getRate,
string rateKey)
{
var rate = getRate(rateKey);
var formattedRate = rate.DollarsPerMonth.ToString("C0");
return formattedRate;
}
또는
public static string GetFormattedRate(
Func<RateType, string> formatRate,
Func<string, RateType>> getRate,
string rateKey)
{
var rate = getRate(rateKey);
var formattedRate = formatRate(rate);
return formattedRate;
}
그런 다음 다음과 같이 사용합니다.
using FormatterModule;
public static Main()
{
var getRate = GetRateFunc(connectionStr);
var formattedRate = GetFormattedRate(getRate, rateType);
// or alternatively
var formattedRate = GetFormattedRate(getRate, FormatterModule.FormatRate, rateKey);
System.PrintLn(formattedRate);
}
이것이 일반적인 관행입니까? 더 비슷한 일을해야한다고 생각합니다
public static string GetFormattedRate(
Func<RateType> getRate())
{
var rate = getRate();
return rate.DollarsPerMonth.ToString("C0");
}
그러나 모든 요율 유형에 대해 메소드에 전달할 새로운 기능을 만들어야했기 때문에 그것은 잘 작동하지 않는 것 같습니다.
때로는 내가해야 할 것 같은 느낌
public static string GetFormattedRate(RateType rate)
{
return rate.DollarsPerMonth.ToString("C0");
}
그러나 그것은 모든 가져 오기 및 형식 재사용 성을 없애는 것처럼 보입니다. 페치 및 포맷을 원할 때마다 하나는 페치 및 하나는 포맷하는 두 줄을 작성해야합니다.
함수형 프로그래밍에서 무엇을 놓치고 있습니까? 이것이 올바른 방법입니까, 유지 관리하고 사용하기 쉬운 더 나은 패턴이 있습니까?
GetFormattedRate()
이 기능을 수용 시키도록하는 것과는 반대로, 매개 변수로 형식으로 속도를 받아들이 반환하는 매개 변수로 형식으로 속도?
closures
매개 변수 자체를 함수에 전달하는 위치를 사용하는 것입니다 . 결과적으로 해당 매개 변수를 참조하는 함수가 제공됩니다. 이 "구성된"기능은이를 사용하는 기능에 매개 변수로 전달됩니다.