问题标签 [guard-clause]

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 回答
196 浏览

f# - 如何使用活动模式而不是当守卫来编写startsWith列表函数?

我需要检查一个列表是否以另一个较短的列表开头。守卫时使用该功能是微不足道的:

但是无论我尝试什么活动模式:

我无法编译。如何使用 Active 模式制作此功能的版本?如果这是不可能的,你能解释为什么吗?

PS 还有其他写上述函数的好方法吗?

编辑:我从丹尼尔的回答中摘录了片段,以免分散真实问题的注意力。

编辑:我的问题从一开始就开始了。我已将活动模式功能定义为

但它应该是

在这种情况下,它将与接受的答案一样匹配。

0 投票
1 回答
405 浏览

f# - 构造函数中的 fsunit.xunit 测试异常

我正在尝试使用 FsUnit + xUnit 测试此异常:

但是当它运行时我看到XUnit.MatchException。我做错了什么?

  1. 测试源代码
  2. 类别类型源代码
0 投票
1 回答
1762 浏览

syntax - 是否可以在 idris 的函数定义中使用守卫?

在 haskell 中,可以这样写:

是否可以在 Idris 中编写等效的东西,而不用ifThenElse(我的实际情况比上面的情况更复杂)?

0 投票
3 回答
275 浏览

ruby - NameError: undefined - 在 Ruby 2.1.2 中更改了局部变量的解析规则?

我正在NameError: undefined local variable or method使用 ruby​​ 2.1.2

正如在这个问题中观察到的那样,表达式如下:

引发未定义的局部变量错误(前提bar是之前未定义),因为bar在分配之前由解析器读取。而且我相信过去与此表达式没有区别:

两者之间的区别在于是否对主体进行评估,但是如果遇到未定义的局部变量在评估条件之前立即引发错误,这无关紧要。

但是当我在 Ruby 2.1.2 上运行第二个代码时,它不会引发错误。以前是这样的吗?如果是这样,那么解析讨论的全部内容是什么?如果没有,Ruby 规范是否发生了变化?有什么参考吗?它在 1.8.7、1.9.3 等中做了什么?

0 投票
1 回答
682 浏览

f# - DateTime.TryParseExact 的模式匹配保护?

如何保护DateTime.TryParseExact(如果可能,获取解析值)?以下代码不起作用。

0 投票
2 回答
177 浏览

prolog - 如果元素不等于字符串,Prolog 添加到列表

我正在尝试创建一个具有非空 Guard 元素的对列表。

这是我尝试过的,但似乎不起作用。正确的方法是什么?

0 投票
3 回答
660 浏览

ruby - Ruby:如果方法返回非零值,则返回

在 Ruby 中是否有更好/更清洁的方法来做到这一点?

#validate在其他地方打电话,所以为了保持干燥,我让它返回错误消息。

0 投票
1 回答
310 浏览

c# - 可能忘记赋值的属性的保护子句

我们有一条消息正在传递给一个方法。

无法检查是否忘记为 IsCredit 分配值,因为未分配的布尔值默认为 false,这意味着它是借方,IsCredit = false;无法将分配检测为未分配,因为它指示借方。

所以我建议使用以 1 开头的DrCrFlag

这样,DoSomething 方法可以有一个保护子句,通过检查枚举是否为零来检查是否忘记分配消息的 IsCredit 属性。

但是,在那些依赖布尔属性的客户端应用程序上,数据契约可能会被破坏。所以将布尔值更改为 DrCrFlag 是不可能的。

因此,我建议使用可为空的布尔值,这也可能会破坏现有的客户端应用程序,但他们更欢迎将布尔值更改为可为空的布尔值,而不是将布尔值更改为枚举。

这可以实现:

这是防止未分配变量的正确方法吗?

所有操作都应该验证传递给它的值吗?

0 投票
3 回答
3507 浏览

ruby - 如何在 Ruby 中编写具有多个条件的保护子句?

对这段代码运行 Rubocop 后,我得到了

因此,从我所读到的“保护条款”中,如果条件不满足,将退出该方法,因此我们不必浪费时间去处理额外的条件,如果我的理解不正确,请纠正我。

我的问题是我将如何使用具有多个条件的保护语句

谢谢

0 投票
1 回答
49 浏览

angularjs - 让角度模板检查“未定义”的范围变量是一种好习惯吗?

示例:图片库指令检索图片并将它们传递给范围:

图片库模板渲染图片和图片数量如下图:

从模板中检查未定义的范围变量是一种好习惯吗?