问题标签 [smartmatch]

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 投票
4 回答
473 浏览

perl - 我可以用 Perl 中的 smartmatch 运算符替换绑定运算符吗?

如何使用 smartmatch 运算符 ( ~~) 编写此内容?

0 投票
4 回答
19815 浏览

perl - Perl 中的“~~”是什么意思?

SO 回答 中,daxim指出:

draegtun回复

从 5.10.1+ 开始,~~ 的顺序很重要。因此它需要是 $scalar ~~ @array

来一份关于来源链接的小型入门书怎么样,~~包括以下具体问题:什么是~~?什么~~叫做?为什么顺序在一个版本中很重要,但在以前的版本中不重要?

请注意,一个好的摘要可能无法包含所有细节,并且可能难以编写。介绍或入门非常有用,可以为不熟悉的人节省时间,~~同时扩大这种 Perlism 的曝光率。

搜索字符串non-word-tilde-tilde non-word-at-sign

0 投票
2 回答
1360 浏览

regex - 如何使用 Perl 的智能匹配同时匹配多个模式?

我试图按照一些示例在以下代码中使用智能匹配,但失败了(没有过滤掉任何内容)。如何在此处使用智能匹配一次匹配多个正则表达式?

0 投票
3 回答
505 浏览

perl - 我可以在 Test::More 的 cmp_ok 中使用智能匹配~~吗?

我正在测试一个返回数组的函数。该数组可能因环境而异,但它始终具有至少一个常量值(我要测试的那个)。

当我使用 Perl 5.12 时,我可以使用 smartmatch 运算符来查找元素是否在数组中:

is但我喜欢“发现”和like“预期”部分的增强输出。所以我尝试了这个:

这不起作用,因为似乎cmp_ok在比较的两个部分都需要一个标量:

“预期”槽中的数组在标量上下文中计算并转换为 2。

我可以通过 hack 使用和字符串化数组来解决这个问题like,但是有一个测试可以使用 smartmatch 运算符作为比较方法(如when)会很好。有没有办法用 Test::More 或其他模块来做到这一点?

目前我正在使用:

这是我能做的最好的吗?

0 投票
3 回答
5169 浏览

perl - 在数组中搜索标量时,Perl 的智能匹配运算符有多快?

我想重复搜索不变的数组中的值。

到目前为止,我一直在这样做:我将值放在一个哈希中(所以我有一个数组和一个内容基本相同的哈希),然后我使用exists.

我不喜欢有两个不同的变量(数组和哈希)都存储相同的东西;但是,散列的搜索速度要快得多。

我发现~~Perl 5.10 中有一个 (smartmatch) 运算符。在数组中搜索标量时效率如何?

0 投票
4 回答
541 浏览

perl - 为什么 smartmatch 根据操作数的顺序返回不同的值?

我有一个数组,以下测试返回 true:

然而,以下测试返回 false:

我在Learning Perl中读到,值在 smartmatch 运算符两侧的位置无关紧要,但显然在上面的代码中确实如此。这是为什么?这两个语句检查不同的东西吗?

0 投票
1 回答
393 浏览

regex - 当我匹配包含斜杠的正则表达式时,为什么 smartmatch 返回 false?

我正在尝试使用 smartmatch 运算符将简单字符串与正则表达式模式进行匹配:

我希望这会打印“ok”,但事实并非如此。为什么不?

0 投票
2 回答
344 浏览

perl - ~~是短路运算符吗?

从perlsyn的智能匹配详细部分:

智能匹配运算符尽可能短路。

与短路运算符(,等)~~有什么共同点吗?&&||

0 投票
3 回答
351 浏览

perl - 为什么 smartmatch 在比较应该不同的数组切片时返回 true?

以下脚本智能匹配两个数组的切片。一开始,两个数组都是相同的,我得到了合理的结果。然后我更改其中一个数组并智能匹配两个新切片,但它仍然说切片是相同的。但是,当我将切片复制到数组中时,智能匹配数组表明它们确实不同。

剧本:

输出:

我正在使用 Perl 5.10.1,这发生在数组切片和哈希切片上。为什么会这样?

0 投票
3 回答
1242 浏览

perl - 即使@array 包含与 LIST 相同的元素,为什么 @array ~~ LIST 返回 false?

我有

第一个是我希望工作的那个,但它不打印任何东西。第二个确实打印 1。

为什么?智能匹配运算符不~~应该在 的情况下匹配@a ~~ (1,2,3)吗?