Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 检查是否有空格并返回布尔值_List_F#_Boolean - Fatal编程技术网

List 检查是否有空格并返回布尔值

List 检查是否有空格并返回布尔值,list,f#,boolean,List,F#,Boolean,我制作了一个列表,其中包含一些值,我试图找到列表的平均值。有没有更聪明的方法来做到这一点?我如何检查像这样的空格/列表[.]并返回布尔值“false” 如果我理解正确,您希望计算浮点列表的平均值,但如果值列表为空,则返回没有平均值的指示。对吗?如果是,则不能返回平均值或布尔值…但可以返回可选值: let average = function | [] -> None | values -> Some (List.average values) average [0.

我制作了一个列表,其中包含一些值,我试图找到列表的平均值。有没有更聪明的方法来做到这一点?我如何检查像这样的空格/列表[.]并返回布尔值“false”


如果我理解正确,您希望计算浮点列表的平均值,但如果值列表为空,则返回没有平均值的指示。对吗?如果是,则不能返回平均值或布尔值…但可以返回可选值:

let average = function
    | [] -> None
    | values -> Some (List.average values)

average [0.0; 0.1; 0.3; 0.4; 1.0; 1.1; 1.1; 1.2; 1.5; 2.0]
|> printfn "%A"

average []
|> printfn "%A"
输出:

"F# Compiler for F# 4.0 (Open Source Edition)

Some 0.87
<null>
F#4.0编译器(开源版) 大约0.87
编辑:输出
是由于编译器优化,将
None
表示为
null
如果我理解正确,您希望计算浮点列表的平均值,但在值列表为空的情况下返回没有平均值的指示。是否正确?如果正确,则无法重新计算eturn平均值或布尔值…但可以返回可选值:

let average = function
    | [] -> None
    | values -> Some (List.average values)

average [0.0; 0.1; 0.3; 0.4; 1.0; 1.1; 1.1; 1.2; 1.5; 2.0]
|> printfn "%A"

average []
|> printfn "%A"
输出:

"F# Compiler for F# 4.0 (Open Source Edition)

Some 0.87
<null>
F#4.0编译器(开源版) 大约0.87
编辑:输出
是由于编译器优化将
None
表示为
null

除了使用dumetrulo建议的
选项
类型外,您还可以使用
结果
类型以特定于域的方式描述业务错误。例如,您可以定义一个枚举预期错误情况的类型,包括列表为空或您可能拥有的任何其他规则(假设您不想在列表中允许任何负值),然后返回带有特定故障情况的
error
,或带有以下值的
Ok

type AggregateError =
| ListIsEmpty
| ListContainsNegativeValues

let average = function
| [] -> Error ListIsEmpty
| list when list |> List.exists ((>) 0.0) -> Error ListContainsNegativeValues
| values -> Ok <| List.average values
如果对包含一个或多个负值的列表运行
average
,则会得到
错误列表containsnegativevalues

average [1.0; -1.0];;

val it : Result<float,AggregateError> = Error ListContainsNegativeValues

除了使用dumetrulo建议的
选项
类型外,您还可以使用
结果
类型以特定于域的方式描述您的业务错误。例如,您可以定义一个枚举预期错误情况的类型,包括列表为空或您可能拥有的任何其他规则(假设您不想在列表中允许任何负值),然后返回带有特定故障情况的
error
,或带有以下值的
Ok

type AggregateError =
| ListIsEmpty
| ListContainsNegativeValues

let average = function
| [] -> Error ListIsEmpty
| list when list |> List.exists ((>) 0.0) -> Error ListContainsNegativeValues
| values -> Ok <| List.average values
如果对包含一个或多个负值的列表运行
average
,则会得到
错误列表containsnegativevalues

average [1.0; -1.0];;

val it : Result<float,AggregateError> = Error ListContainsNegativeValues

数据中“空白”的定义是什么?值为0.0是否表示空白?它不能是
null
值,因为F#中的浮点数不允许为null。一旦我们知道你所说的“空白”是什么意思,我们就可以回答你的问题了。如果有这样的空白[]你的数据中“空白”的定义是什么?值为0.0是否表示空白?它不能是
null
值,因为F#中的浮点数不允许为null。一旦我们知道你所说的“空白”是什么意思,我们就可以回答你的问题了