问题标签 [control-flow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
259 浏览

scala - 带有咖喱功能的奇怪东西

我有这种奇怪的情况,我不明白。我正在阅读“Scala 编程”一书,Ch。9.

假设我有一个咖喱函数:

当我在特殊的 curly-syntax 中使用一个参数调用它时,它按预期工作:

但是,如果我提出两个陈述,我会得到一些奇怪的东西:

“你好!”怎么来的?在“之前”之前打印,然后在里面打印“5”?我疯了吗?

0 投票
2 回答
2100 浏览

objective-c - 暂停 for 循环的迭代以等待用户输入

我写了一个for循环,它遍历一个对象数组。现在我问自己是否有可能中断循环的迭代,直到用户单击调用 a 的按钮IBAction

0 投票
5 回答
1846 浏览

python - 避免 Python 代码中的代码重复

考虑以下 Python 片段:

现在,假设我要处理 is 的情况KNone所以写入继续到文件的末尾。我目前在做

这显然不是处理此问题的最佳方法,因为我正在复制代码。有没有更综合的方法可以处理这个问题?很自然的事情是只有在is notif/break时才存在代码,但这涉及像 Lisp 宏那样动态编写语法,而 Python 不能真正做到这一点。为了清楚起见,我并不关心特定案例(我选择它的部分原因是为了它的简单性),而是学习我可能不熟悉的一般技术。KNone

更新:阅读人们发布的答案并进行更多实验后,这里有更多评论。

如上所述,我一直在寻找可以推广的通用技术,我认为@Paul 的答案,即使用takewhilefrom iterrools,最适合。作为奖励,它也比我上面列出的简单方法快得多;我不确定为什么。itertools虽然我看过几次,但我不是很熟悉。从我的角度来看,这是For The Win的函数式编程案例!(有趣的是,作者itertools曾经询问过有关 drop 的反馈。请参阅以http://mail.python.org/pipermail/python-list/2007-December/522529.htmltakewhile开头的线程。)我在上面简化了我的情况,实际情况有点混乱 - 我正在循环中写入两个不同的文件。所以代码看起来更像:

鉴于我发布的示例,@Jeff 合理地建议在 when is 的情况下KNone我只需复制文件。因为在实践中我无论如何都在循环,这样做并不是一个明确的选择。但是,takewhile可以轻松地推广到这种情况。我还有另一个在这里没有提到的用例,但也可以在takewhile那里使用,这很好。第二个例子看起来像(逐字)

在这里我可以使用条件

根据@Paul 的原始示例。但是,尽管代码有效,但我对我i从外部范围获得的事实并不完全满意。有没有更好的方法来做到这一点?或者也许它应该是一个单独的问题。无论如何,感谢所有回答我问题的人。对@Jeff 的荣誉提及,他提出了一些很好的建议。

0 投票
4 回答
304 浏览

python - 避免 Python 代码 redux 中的代码重复

这是对较早问题的跟进。我得到了一些很好的建议,所以我想我会再试试运气。

是否可以压缩此代码?如果我在像这样的两个循环中有一些共同点,一个明显的可能性是只分解公共代码,但是在这里,eww。令人讨厌的是,这里唯一的区别是写入c.

代码简要总结:如果K不是None,则循环遍历Kof 行a并同时写入band c。否则,遍历所有a并写入b.

0 投票
5 回答
685 浏览

java - 这个 `try..catch..finally` 是多余的吗?

这与我们省略 catch 子句的行为有什么不同吗?


[编辑]为了消除混乱,是的,catch除了重新抛出异常之外,该块什么都不做。我想知道这是否会在调用块时导致某种不同的排序finally(假设抛出的异常被调用者捕获),但从我迄今为止从答案中推断出来的,它没有。

0 投票
2 回答
202 浏览

language-agnostic - COMEFROM 控制流

根据维基百科, COMEFROM 流量控制被认为是一个笑话,不可读或完全有害。我想这样的功能在 AOP 场景中会非常有用(即,向方法添加记录器而不向方法添加记录器调用)。

这种控制结构不明显的缺点是否超过了潜在的有用性?还有其他缺点需要考虑吗?

因为这个而被提示问这个问题。

0 投票
3 回答
150 浏览

r - 在 R 中使用嵌套 if 评估一系列标准 - 有没有更好的方法?

我的大部分工作都围绕着结核病的诊断测试。正如您可能想象的那样,能够快速评估和验证这些测试的输出是很方便的。我在这里写了一个函数来做到这一点(为了清楚起见,删减了)。简而言之,它从测试中获取数字结果并产生制造商指定的解释。

这个功能对我来说效果很好——我已经通过数千次测试对其进行了验证,它对于我扔给它的任何东西都足够快。但是,我想将它和几个类似的功能捆绑到一个包中以供更广泛地使用,并且我想在这样做之前获得一些反馈:

  1. 该函数依赖于围绕嵌套 if-else 函数的大 for 循环。它不是特别优雅,而且这种恐惧for()无疑会损害我的可信度(咳咳),但它确实有效。有更好的方法吗?如果是这样,是否足以保证重新编写有效的代码?

  2. 上述函数中的标准用于解释北美测试;世界其他地区遵循略有不同的标准。我也想要那些可用的。我正在考虑为每个单独的非导出函数。各种数据检查(不包括上述要点)将继续存在于主函数中,然后调用指定的子函数。这听起来合理吗?

  3. 还有其他建议或建议吗?风格,代码组织——任何东西。

我意识到我可能应该把这只幼鸟赶出巢穴,但我主要是在真空中工作,所以有点紧张。任何意见是极大的赞赏。

编辑:如果您错过了要点的链接,这就是我正在谈论的功能


根据要求,取样测试数据

0 投票
1 回答
489 浏览

android - 什么是一次性确定用户位置(通过 GPS)的正确控制流程?

我正在寻找“正确”的方法来修复用户的位置作为一次性任务。目前,我的执行流程大致是:

  1. 用户按下按钮。
  2. 处理程序(包含在主Activity代码中)向系统注册 GPS 位置侦听器,设置为尽快更新,启动ASyncTask并完成。
  3. 执行前,ASyncTask生成一个 ProgressDialog,有效地阻止任何其他 UI 使用。
  4. 对于它的后台任务,ASyncTask等待超时或 GPS 定位。
  5. 执行后,如果找到位置,ASyncTask要么向用户显示一些相关数据,否则在 toast 中显示错误。当然,它也会注销监听器。

现在,虽然这有效,但也有许多缺点。首先,很明显,在发出请求时,与应用程序的所有其他 UI 交互都会被阻止。目前这还不算太糟糕,因为应用程序的主要功能是执行此任务,并且在它工作时没有太多其他事情可做 - 它还可以阻止用户向按钮发送垃圾邮件。此外,我不确定 ASyncTask 的执行后阶段是否真的是放置我的位置发现逻辑的地方(它会拨打互联网电话,这本身在 ASyncTask 中可能会更好?)。但是,我不确定如何将已找到位置以及主线程应该做某事的事实传回。

我希望有人能告诉我这样做的“正确”方法 - 即使用这样的 ASyncTask 是正确的,是否涉及服务,以及我应该如何处理找到的互联网呼叫后定位),甚至可能给出一些明智的话,说明一般如何处理必须进行某种“阻塞”调用的应用程序的控制流。

如果需要,我可以提供代码,可能需要一些时间才能将其缩减为最低限度的解决方案。

0 投票
4 回答
2054 浏览

scala - Scala 的“if ... else”是否可以作为库函数实现?

我想知道是否if … else可以Predef通过特殊的编译器处理实现 in ,其方式类似于正在执行的操作classOf[A]:定义在 in Predef,实现由编译器填充。

诚然,无论在什么情况下,很多人都会放心,知道 anif始终是 an if,并且 anelse始终是 an 。else但是,将else结果类型定义为方法if会将其从关键字列表中删除,并允许库设计者定义自己的else方法。(我知道我可以使用任何关键字作为带有反引号的标识符,但是`else`在代码中看起来很糟糕。)在这种情况下讨论的情况下,这些方法可能很有用,在邮件列表中讨论过,人们被迫otherwise在定义实际上应该命名的方法时使用else。(也在这里这里讨论过.)

所以:

  • 即使在理论上,这种方法是否可行,还是它违反了 Scala 中的一些基本原则?
  • 缺点是什么?
0 投票
2 回答
303 浏览

python - Python cmd解释器添加if语句

对于我的一个项目,我有一个围绕 python cmd类构建的 python 程序。这使我能够围绕发送到数据库的 sql 语句制作一种迷你语言。除了使与 python 的连接变得更容易之外,我还可以做 sql 不能做的事情。这对几个项目非常重要。但是,我现在需要添加 if 块以获得更大的控制流。

我目前的想法是,我将只在语言中添加两个新命令,即 IF 和 END。这些设置了一个变量,该变量确定是否跳过一行。我想知道是否有其他人使用 cmd 模块完成了此操作,如果是,是否有我缺少的标准方法?谷歌似乎没有透露任何内容,cmd 文档也没有透露任何内容。

对于与我正在做的类似的想法,请转到此处。欢迎提问和评论。:)

嗯,比我想的要复杂一点,虽然有 python 语法会很好。在我最终完成之前,我争论了很长时间来构建一种迷你语言。问题主要来自外部限制。我有一堆“数据”,很慷慨,要变成sql。这是基于其他不会通过的“数据”。它对于问题的每个特定“版本”也是唯一的。对 sql 做直接数据本来是我的第一个倾向,但不切实际。

对于好奇的人,我花了很多时间来阅读 unix 编程艺术中的迷你语言章节,在这里可以找到。

如果我用纯 python 构建了这个东西,我就不会拥有解决问题集绝对需要的灵活性。