问题标签 [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 回答
5416 浏览

haskell - Haskell 模式匹配守卫

假设我想在 Haskell 中建模一个树结构

我想测试每个条目是否小于 10。我想我会使用模式匹配并写

但是,它给出了关于abc超出范围的错误。我原以为将它们放在警卫中基本上会将它们放在范围内。这不是你应该在 Haskell 中进行模式匹配的方式吗?我环顾四周寻找可以指导我的示例,但我没有在使用由其他几个数据结构组成的数据结构的守卫中找到任何模式匹配示例。

错误:

0 投票
1 回答
46 浏览

php - PHPUnit 和 Guard Clause,不是 100% 覆盖

我有这个警卫:

和测试:

CategoryCollection remove 方法调用 validateRemove 方法

测试工作正常,但覆盖率不是 100%,因为测试无法访问 validateRemove 方法的最后一行:

在此处输入图像描述

什么是适当的解决方案?

0 投票
1 回答
1247 浏览

haskell - 模式不匹配:(_:_:_)

所以我正在尝试构建一个函数,它接受一个元组列表并找到具有最大第二个元素的元组。但是我遇到了模式匹配错误。

这是我的代码。

这是我的错误。

0 投票
1 回答
677 浏览

ruby - 如何在 ruby​​ 中提前返回以减少嵌套 if?

我总是使用提前返回来减少嵌套 if(使用其他语言编程),如下所示:

但是我如何在 ruby​​ 中提前返回?我无法在 Ruby 的 if 块内返回。我得到了错误

“未捕获的异常:意外返回......'块(2级)':意外返回(LocalJumpError)”

- - 更新 - - -

抱歉,我忘了提到在这样的简单情况下它可以工作

我正在学习 Fiber,我使用来自https://www.igvita.com/2010/03/22/untangling-evented-code-with-ruby-fibers/的示例

我得到了错误。

---- 更新 2 ----

有了我得到的答案和评论,我发现了这个如何从一个块中提前返回一些东西?

为什么在使用 Proc.new v. & 符号时,ruby 中的 break 语句表现不同?解释了为什么 break 也不起作用。引用“break 应该使块的调用者返回,但 Proc.new 已经返回。”

return vs break vs next 绝对是 ruby​​ 新手的障碍

0 投票
2 回答
174 浏览

haskell - 使用警卫纠正缩进规则

我查看了有关缩进的问题,但没有任何帮助。我的缩进看起来也正确,但根据编译器它不是。什么是正确的缩进,规则是什么?

使用所有空格且不使用制表符。错误:“输入'|'上的解析错误 | 结束 = 返回()“

0 投票
1 回答
194 浏览

haskell - 在函数调用之前附加值时出现“函数中的非详尽模式”错误

我不确定我没有处理什么。假设我有一个函数,它将整数转换为字符串。调用它converter

现在,要将位置整数转换为字符串,我只需调用converter. 要将负整数转换为字符串,我附加-converter调用。

这是我的代码:

当我运行代码并尝试时negOrPosConverter (ActualInt (-200)),出现此错误:

知道为什么吗?

0 投票
2 回答
950 浏览

haskell - 左箭头 <- 在 do 块之外是什么意思?

我最近遇到了以下代码,这让我很困扰

这段代码来自 https://phabricator.haskell.org/rGHCb0534f78a73f972e279eed4447a5687bd6a8308e

在文件 compiler/cmm/CmmLayoutStack.hs

第 983 行

我真的很想知道第二行中这是什么<-。我相信lowerSafeForeignCall是一个函数,而| 和“否则”表示此函数使用警卫。所以

必须是 Bool 类型。但是 <- 在任何 do 块之外。我在网上做了一些搜索,但仍然没有关于这种用法的任何线索。

0 投票
1 回答
111 浏览

function - Haskell 对水平线感到困惑

我试着练习一下haskell,但我没有让下面的代码工作:

如果您称它为rems kx ,此函数会从列表 x 中删除每个 k 。我知道它应该有效,因为我们在大学时就写下了它。

我正在使用这个 IDE:https ://repl.it/languages/haskell

0 投票
2 回答
492 浏览

c++ - 具有布尔逻辑的单个返回是否等同于保护子句?

我正在使用 C/C++ 中的一个布尔函数来验证多个条件(它们本身就是布尔函数),并且只有在所有条件都为true时才返回true

前段时间我开始使用 Guard Clauses 而不是嵌套的if s,即使它需要有多个返回,如下所示:

但现在我问自己,仅使用一个布尔逻辑返回是否是一个不错的选择,例如:

我没有任何代码可以在守卫之后运行,而且只有少数几个,所以 return 语句不是那么拥挤,代码也不难阅读。这个想法是避免嵌套if s 并在我的函数中只使用一个退出点。

我测试了代码,它运行良好,即使 condition_1() 对 condition_2() 进行了一些更改。所以我知道保护条款代码和这个版本是等价的,执行顺序是从左到右保持的。那是对的吗?是否有任何隐藏的差异使两个版本不是 100% 等效?

谢谢!

0 投票
1 回答
158 浏览

function - 为什么在通过受保护方程定义函数时“解析模式中的错误:x >= y”?

我尝试使用受保护的方程来定义一个函数。为什么它在 GHCi 中不起作用?谢谢。