【发布时间】:2016-04-26 22:27:57
【问题描述】:
我只想说“usd_to_euro 100”并为我的特定日子取回正确金额的欧元(例如:90)。 create_exchange_functions 需要返回什么?
let create_exchange_functions (usd_to_euro_rate, usd_to_yuan_rate, usd_to_peso_rate, usd_to_pound_rate, usd_to_ruble_rate) =
(??, ??, ??, ....??);
//在第 x 天早上我运行这个:
let (usd_to_euro, usd_to_yuan, usd_to_peso, usd_to_pound, usd_to_ruble) = create_exchange_functions(0.9, 4., 3., 0.6, 5.);
usd_to_pound 10.;
//在第 y 天的早上我运行这个:
let (usd_to_euro, usd_to_yuan, usd_to_peso, usd_to_pound, usd_to_ruble) = create_exchange_functions(0.92, 3.8, 3., 0.65, 5.);
usd_to_pound 10.;
//在第 z 天的早上我运行这个:
let (usd_to_euro, usd_to_yuan, usd_to_peso, usd_to_pound, usd_to_ruble) = create_exchange_functions(0.92, 3.8, 3., 0.62, 5.);
usd_to_pound 10.;
【问题讨论】:
-
为什么要在巨大的元组中搞砸呢? - 显然,您可以使用
let inline exchange rate input = input * rate之类的汇率进行操作,然后使用let exchangeFuns = rates |> List.map exchange将汇率列表映射到交换函数列表中 -
如果您使用度量单位,这也可以非常易读且非常安全
-
我正在尝试在不使用列表函数的情况下处理语言。试图更好地理解更基础的内容。
-
您是使用 F# Interactive 还是编写代码和编译?如果您想从最基本的层面学习并避免使用列表,那么请使用 F# Interactive 创建一些函数并使用 F# Interactive 快速处理它们。
-
在视觉工作室上进行交互。它帮助我尝试使用模式匹配来解决这个问题。我几乎想通了,但总是欢迎帮助。
标签: design-patterns f# functional-programming currying