此表达式应具有字符串类型,但此处具有 Gen<string> 类型
This expression was expected to have type string,but here has type Gen<string>
我有这个记录:
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;
我遇到了错误:
This expression was expected to have type string,but here has type Gen<string>
最后剩下的一行存在这个错误。
因为您想要为您的客户生成一个生成器,您必须首先为您的字段数据生成示例 - 因此 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!
语法从生成器中生成示例
我有这个记录:
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;
我遇到了错误:
This expression was expected to have type string,but here has type Gen<string>
最后剩下的一行存在这个错误。
因为您想要为您的客户生成一个生成器,您必须首先为您的字段数据生成示例 - 因此 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!
语法从生成器中生成示例