首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chain.While示例

Chain.While示例
EN

Stack Overflow用户
提问于 2016-09-29 00:41:54
回答 1查看 655关注 0票数 2

我试图在多次迭代中循环一个对话框。

例句:我喜欢连续问5次问题(参数不同)。我能够用MyDialog.Loop()循环我的对话框无穷大-没问题。

但我需要一个有限的数字-我想我需要使用Chain.While()

到目前为止还没有成功,我也找不到任何使用Chain.While()的例子。

任何帮助或示例代码都是非常感谢的。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-09-29 12:34:19

下面是一个显示电子邮件链的示例,它使用时间询问电子邮件接收者:

代码语言:javascript
复制
Func<string, IDialog<string>> Ask = toUser =>
    Chain.Return(toUser)
    .PostToUser()
    .WaitToBot()
    .Select(m => m.Text);

IDialog<IReadOnlyList<string>> recipientsDialog =
    Chain
    .Return(Array.Empty<string>())
    .While(items => Ask($"have {items.Length} recipients, want more?").Select(text => text == "yes"),
    items => Ask("next recipient?").Select(item => items.Concat(new[] { item }).ToArray()));

var emailDialog = from hello in Chain.PostToChain().Select(m => m.Text + " back!").PostToUser()
                    from subject in Ask("what is the subject?")
                    from body in Ask("what is the body?")
                    from recipients in recipientsDialog
                    select new { subject, body, recipients };

var rootDialog = emailDialog
    .Select(email => $"'{email.subject}': '{email.body}' to {email.recipients.Count} recipients")
    .PostToUser();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39759655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档