假设我有 2 个功能
Func<Id, Option<Employee>> FindEmployee
如果找到 ID,则返回员工,否则返回None
;
Func<Employee, Option<Entry>> PromptPassword
它将打开一个询问密码的对话框,如果点击 OK 按钮,它将返回用户条目;如果取消被击中,它将返回 None
我想有一种优雅的方式来组合这两个功能,基本上我想做:
FindEmployee.Map(emp =>
{
while (true)
{
var result = PromptPassword (emp);
if (result.IsNone)
{
return false;
}
bool matched = result.Where(a => a.EntryContent == emp.Password)
.Some(r => true)
.None(false);
if (matched)
return true;
}
});
最终结果是一个选项你看,我想一直提示输入密码,直到用户正确输入。但是在 a 中使用 while 循环Map
实在是太难看了。
它必须有更好的方法来写这个。谁能给个提示?
谢谢