F#中类型的最大值/最小值

甲虫

Unchecked.defaultof<'T>生成任何类型的默认值。是否存在这样的通用函数,可以在具有最大值/最小值的类型有意义的情况下为任何类型生成最大值/最小值?

编辑

为了回答约翰·帕尔默(John Palmer)的问题,我认为这将是有用的:我想创建以下函数的“可变”版本:

let InternalArrDiffMax (s : 'T []) (diff : 'T -> 'T -> 'C) =
    s
    |> Array.mapi (fun i e -> 
        [| for j in i + 1 .. s.Length - 1 -> diff e s.[j] |]
        |> Array.maxBy (fun n -> n))
    |> Array.maxBy (fun e -> e)

因为我不能在不给变量赋值的情况下声明可变变量,所以我认为除了以下以外,没有其他方法可以做到:

let InternalArrDiffMax (s : 'T []) (diffFun : 'T -> 'T -> 'C) =
    let mutable max : 'C = // Generic max of 'C if it makes sense

    for i in 0 .. s.Length - 1 do
        for j in i + 1 .. s.Length - 1 do
            let diff = diffFun s.[i] s.[j]
            if (i = 0 && j = 1) || max < diff then
                max <- diff

    max

这就是为什么我认为我需要通用最大值。

凯发

如果您必须沿这条路线前进,那么总会有反思。但是,我建议不要将其MaxValue用作带外值或特殊值。

let inline tryGetMaxValue< ^a> () =
    match typeof< ^a>.GetField("MaxValue") with
    | null -> None
    | fieldInfo -> fieldInfo.GetValue() |> unbox< ^a> |> Some

let maxvi = tryGetMaxValue<int>()            // val maxvi : int option = Some 2147483647
let maxvf : float option = tryGetMaxValue()  // val maxvf : float option = Some 1.797693135e+308
let maxvs : string option = tryGetMaxValue() // val maxvs : string option = None

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

F#中类型的最大值/最小值

来自分类Dev

如何获取e剂中每种类型的最小值和最大值

来自分类Dev

C中数据类型的大小、最小值和最大值

来自分类Dev

选项类型编号中的jQuery数据输入验证最小值和最大值

来自分类Dev

在Python中查找列表的最小值,最大值

来自分类Dev

获取Clojure中的最大值和最小值

来自分类Dev

数组中的Java最小值和最大值

来自分类Dev

在列表中交换最大值和最小值

来自分类Dev

列表集合中的最小值和最大值

来自分类Dev

在.json中查找最大值和最小值

来自分类Dev

CUDA中的整数最小值/最大值

来自分类Dev

Oracle:重复组中的最小值最大值

来自分类Dev

元组列表中的最小值和最大值

来自分类Dev

在列表中获取最小值和最大值

来自分类Dev

获取Clojure中的最大值和最小值

来自分类Dev

在.json中查找最大值和最小值

来自分类Dev

Oracle:重复组中的最小值最大值

来自分类Dev

JavaScript中数组的最小值和最大值

来自分类Dev

数组中的最大值和最小值

来自分类Dev

列表集合中的最小值和最大值

来自分类Dev

系列中的最小值和最大值

来自分类Dev

用数组中的最小值替换最大值

来自分类Dev

Pandas 中的 Rowwise 最大值/最小值

来自分类Dev

最小值和最大值

来自分类Dev

数组的最小值/最大值

来自分类Dev

从数组中查找最小值和最大值,最小值始终为0

来自分类Dev

从数组中查找最小值和最大值,最小值始终为0

来自分类Dev

如何在接受浮点值的输入类型上设置最小值和最大值?

来自分类Dev

在 VBA 中查找字典值中的最大值/最小值