gpt4 book ai didi

f# - 当我调用一个参数用逗号分隔的函数时会发生什么?

转载 作者:行者123 更新时间:2023-12-04 19:59:55 24 4
gpt4 key购买 nike

我是 F# 的新手,似乎无法让我的 googler 解决这个问题。

我有这个功能

namespace RiskMeasurement
module Basics01 =
let AvailableCapital (nominalAssetValue: float) (provisions: float) (liabilities: float) =
nominalAssetValue - provisions - liabilities

调用

namespace RiskMeasurement
module Main =
[<EntryPoint>]
let main args =
let floats = Array.map float args
let availableCapital = Basics01.AvailableCapital floats.[0] floats.[1] floats.[2]
printfn "Available Capital: %f" availableCapital

let availableCapital = Basics01.AvailableCapital floats.[0], floats.[1], floats.[2]

// Return 0 to indicate success.
0

当我用空格分隔的参数调用函数时,availableCapital 是一个 float 。那讲得通。当用逗号分隔 args 调用时,availableCapital 是 (float -> float -> float) * float * float。我完全不明白。我在做什么?

最佳答案

这样读:

let availableCapital = (Basics01.AvailableCapital floats.[0]), floats.[1], floats.[2]

因此 availableCapital 的第一个组件是一个部分应用的函数,它需要另外两个参数。

如果你想用逗号分隔的参数来调用它,你会这样写

let availableCapital = Basics01.AvailableCapital (floats.[0], floats.[1], floats.[2])

并得到一个类型错误。

关于f# - 当我调用一个参数用逗号分隔的函数时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3833779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com