问题标签 [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 投票
1 回答
405 浏览

elixir - 测试守卫的真实性

我可以使用警卫来测试参数是否为true

这对布尔值按预期工作:

但它无法测试其真实性:

是否可以测试警卫的真实性?例如,下面的函数可以使用上述风格的守卫来编写true?/1吗?

0 投票
1 回答
369 浏览

haskell - 初学者 Haskell 问题 - 无法将类型 'Bool' 与 '[Char]' 匹配

我需要在 Haskell 中使用递归来做一个回文检查器来完成家庭作业。该函数应该接受一个字符串并返回一个Bool. 尝试编译时,出现错误,"Couldn't match type ‘Bool’ with ‘[Char]’."

我对 Haskell 很陌生,所以我确定我只是忽略了一些愚蠢的事情,但我想我还是会寻求一些帮助。我在下面粘贴了我的代码,以及我收到的完整错误。

我的实现检查输入字符串是否为空或大小为 1,如果是则返回 true。如果不是,它检查第一个字符和最后一个字符是否不同,如果不同,则返回 false。否则,它会再次调用自身,传入字符串中第一个和最后一个字符被截断。

0 投票
2 回答
126 浏览

haskell - 使用我的 haskell 函数解析错误以识别数字是否为素数

我是 Haskell 的初学者,我似乎无法理解我的功能有什么问题。我不断收到解析错误,我不明白我的代码有什么问题。

0 投票
3 回答
100 浏览

function - 取决于两个布尔守卫的不同递归的语法是什么?

我对 Haskell 很陌生,正在尝试编写一个简单的函数,该函数将整数数组作为输入,然后返回所有元素的乘积或平均值,具体取决于数组的长度是奇数还是偶数,分别。

我了解如何为递归设置基本情况,以及如何为不同情况设置布尔值守卫,但我不明白如何协同工作。

目前我收到一个错误

但我不明白我将如何在let这里使用 a 。

0 投票
4 回答
2621 浏览

haskell - 在'do'块内守卫 - haskell

我想写一个简单的游戏“猜数字”——n尝试。我想添加一些条件和命中。是否可以在块内使用警卫do

这是我的代码:

已经有错误

它可以用一些空白来修复,还是不可能做到?

0 投票
2 回答
443 浏览

list - 在 Haskell 中将元素插入到给定索引的列表中

函数必须是这样的:insertElemAt :: a -> [Int] -> [a] -> [a].

例子:

我只知道初学者 Haskell(if使用管道|和递归),但我尽我所能来解决这个问题,但它从来没有奏效。这是我最近的尝试:

我也尝试过这样的事情,但这似乎很混乱,我认为第一个更好:

也许我的模式不好?我尝试以多种方式编写它们。

我还必须能够使用此函数并在名为 的函数中使用它,该函数insertElemsAt (:: [(a, Int)] -> [a] -> [a])必须是上述函数的“通用”版本。所以我必须能够在哪个位置给出我想插入什么样的元素。

由于我不能做第一个,所以我更加迷失了这个。这是示例。我不知道如何使用管道if-s 和递归来做到这一点:

有人可以向我解释如何以最简单的方式做到这一点吗?预先感谢您的任何帮助!

0 投票
2 回答
167 浏览

ruby-on-rails - 在 ruby​​ on rails 中为多个独立的 if 子句使用保护子句

如何在以下场景中使用保护子句?在 2 个独立的msgif 子句中捕获信息。

0 投票
1 回答
92 浏览

coding-style - 单语句功能的保护子句?

如果满足条件,编写一个有效执行一条语句的非常简单的函数的最易读的方法是什么?

我觉得最具可读性的是:

然而,我的同事坚持认为保护子句使任何东西都更具可读性,并且总是这样编写这个函数:

我知道保护子句在更大的函数中更具可读性,尤其是在需要检查多个条件和/或需要抛出异常的情况下。但是在这样的情况下,我总是需要做三遍才能了解在哪种情况下会执行 doTheThing() ,这对于这样一个简单的函数来说似乎很荒谬。

0 投票
1 回答
143 浏览

haskell - 如何解决输入“否则”的Haskell解析错误

我有一个函数,它返回从输入列表中找到的一半回文列表。如果我在一行上使用 if 语句,它会起作用,但我想使用警卫。警卫给我一个解析错误。我读了很多给出这种错误的案例,但我没有弄清楚我的案例。这是代码:

和错误:

如果我更换该功能有效

在我的代码中,if 语句是一行,它不适合这里。如果有人能告诉我哪个是首选,如果或守卫,我将不胜感激。当然,为什么我的警卫不起作用。