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# 此表达式的类型应为string,但此处的类型为Gen<;字符串>;_F#_Fscheck - Fatal编程技术网

F# 此表达式的类型应为string,但此处的类型为Gen<;字符串>;

F# 此表达式的类型应为string,但此处的类型为Gen<;字符串>;,f#,fscheck,F#,Fscheck,我有这样的记录: type Client = { Name : string; Income : int ; YearsInJob : int UsesCreditCard : bool; CriminalRecord : bool } 为了创建此记录的生成器,我尝试了以下代码: let chooseFromList xs = gen { let! idx = Gen.choose(0, List.length xs - 1) ret

我有这样的记录:

type Client = 
   { Name : string; Income : int ; YearsInJob : int
     UsesCreditCard : bool;  CriminalRecord : bool }
为了创建此记录的生成器,我尝试了以下代码:

let chooseFromList xs =
    gen {
        let! idx = Gen.choose(0, List.length xs - 1)
        return (List.nth xs idx)
    }



let generateName = (Gen.oneof [ gen {return "A"};gen {return "B"};gen {return "C"}])
let generateIncome=  (chooseFromList [0..5000])
let generate_YearsInJob= chooseFromList [0..45]
let generate_UsesCreditCard = (Gen.oneof [ gen { return true }; gen { return false } ])
let generate_UsesCriminalRecord= (Gen.oneof [ gen { return true }; gen { return false } ])



let genertate_Client =
{

      Name= generateName;
      Income=generateIncome;
      YearsInJob=generate_YearsInJob
      UsesCreditCard=generate_UsesCreditCard
      CriminalRecord=generate_UsesCriminalRecord
}
问题在第
Name=generateName行我遇到了erorr:

This expression was expected to have type string,but here has type Gen<string> 
此表达式应具有string类型,但此处具有Gen类型

最后一行存在此错误。

当您想要为客户端生成生成器时,必须首先为字段数据生成示例-因此
gen{…}
语法非常方便:

let genertate_Client =
   gen {
      let! name = generateName
      let! income = generateIncome
      let! yearsInJob = generate_YearsInJob
      let! creditCard = genergenerate_UsesCreditCard
      let! criminal = generate_UsesCriminalRecord
      return { 
         Name = name; 
         Income = income;
         YearsInJob = yearsInJob;
         UsesCreditCard = creditCard;
         CriminalRecord = criminal }
   }

当然,这里您可以使用
let计算中的语法

修复名称的类型?或者问它第一个值?还是把所有的东西都串起来?或者可能是其中一个字符串(而不是生成器,每个生成器生成一个不同的字符串)?错误是它所说的:生成器不是字符串。