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
F#:如何检查n元组中的内容并返回true或false?_F#_F# Data - Fatal编程技术网

F#:如何检查n元组中的内容并返回true或false?

F#:如何检查n元组中的内容并返回true或false?,f#,f#-data,F#,F# Data,考虑以下F#代码: 我这里有错误,有什么修正吗?首先,请发布错误消息和一个更具体的问题。谢谢但幸运的是,我可以从这个问题中推断出错误消息 接下来,如果在解构employee8元组后,您希望变异SalaryType,则应使用mutable关键字编写: 让可变(fName、lName、职业、部门、薪水类型、, 每周小时数、年平均数、小时年龄)=员工 但你不应该。下文将对此作进一步解释 下一个问题:没有用于访问元组成员的点表示法(notuple.member)。只有通过解构才能实现。所以你不能empl

考虑以下F#代码:


我这里有错误,有什么修正吗?

首先,请发布错误消息和一个更具体的问题。谢谢但幸运的是,我可以从这个问题中推断出错误消息

接下来,如果在解构
employee
8元组后,您希望变异SalaryType,则应使用
mutable
关键字编写:

让可变(fName、lName、职业、部门、薪水类型、,
每周小时数、年平均数、小时年龄)=员工

但你不应该。下文将对此作进一步解释

下一个问题:没有用于访问元组成员的点表示法(no
tuple.member
)。只有通过解构才能实现。所以你不能
employee.SalaryType

这里是问题的症结所在,这是我在学习函数式编程时犯过的多次错误,这是一个很难适应的范式转换。您不应该试图改变数据,或者在这种情况下,改变变量。一般来说,变量或在F#中称为的值不应该改变。函数应该是纯函数

这意味着在离开函数后,传递到函数中的任何参数都不应更改。返回调用范围后,参数
employee
应相同

你犯了一些语法错误,这让我很难推断出你一开始想做什么。请在问题中包括这一点

还有,最后一点挑剔。正如您所知,F#函数中的最后一个表达式是它的返回值。不使用if语句,只需返回正在测试的条件,如下所示:

让。。。
...

employee.SalaryType=SalaryType
Hi@dr_hakase,欢迎来到StackOverFlow!请您详细说明您的问题,并用代码发布您面临的错误,好吗?以下教程也可以帮助您:
let isSalary employee =
    let (fName,lName,Occupation,Department,SalaryType,
         HoursPerWeek, AnnualSalary, HourlyWage
        ) = employee
    SalaryType = "Salary"
    if(employee.SalaryType = SalaryType) then 
     true
    else 
     false