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

perl - 为什么@array ~~ $number 与@array == $number 不同?

根据Programming Perl,使用左边的“any”和右边的数字的智能匹配检查数字是否相等:

因此,我希望输出以下内容1

但它实际上输出的是空字符串。

我认为@arr会被转换为标量1,因为它有 1 个元素,所以say @arr ~~ $num相当于say @arr == $num.

为什么@arr ~~ $num不同于@arr == $num?

0 投票
1 回答
149 浏览

perl - 为什么在取消引用左侧的 arrayref 时 smartmatch 不起作用?

我目前正在阅读O'Reilly 的Intermediate Perl并尝试做其中的一个练习。我对 Perl 中的引用不熟悉,所以我希望我不会误解某些东西并错误地编写此练习。

但是,我尝试调试此代码,但无法得出智能匹配行每次都失败的结论。据我了解@array ~~ $scalar,如果在@array.

下面是我的代码:

0 投票
1 回答
1415 浏览

regex - Perl:使用 smartmatch 操作根据值数组搜索字符串

考虑一个字符串,例如响应标头:HTTP/1.1 404 Not Found

我很好奇您是否可以使用智能匹配~~或双波浪号)运算符和正则表达式的组合来搜索不完整的匹配项或匹配项的子集。

我知道这可以通过某种循环、grep 或 map 来完成。但我正在检查可以做什么~~和不能做什么的可能性。

该文档非常具有描述性,并且对于大多数 lhs/rhs 条件似乎遵循[all in left side] == [all in right side]评估的返回 true。

也就是说,如果$head只是$head=q{200}它会匹配的数字(例如 )。


预期结果将类似于:

0 投票
3 回答
12766 浏览

perl - Perl 5.20 与智能匹配和给定时间的命运

我刚刚安装了 Perl 5.18,我收到了很多这样的警告,

调查这些警告——我从未听说过在任何地方提到过——我只能在两个地方找到这个,

Perl Delta 仍然最常提及这些功能正在发生的事情。它半埋在吊舱里,

智能匹配,在 v5.10.0 中添加并在 v5.10.1 中进行了重大修改,一直是投诉点。尽管它有很多有用的方式,但它也被证明对于 Perl 的用户和实现者来说是有问题的和令人困惑的。关于如何最好地解决这个问题,已经提出了许多建议。很明显,smartmatch 几乎肯定会在未来改变或消失。不建议依赖其当前行为。现在,当解析器看到 ~~、given 或 when 时,将发出警告。

我很困惑 Perl 在过去 10 年中最重大的变化是如何被取消的。我已经开始在各处使用given,when和。smartmatch有没有关于这些期货的更多信息?怎么会有人觉得它们“令人困惑”?这些特征可能会发生怎样的变化?是否有计划通过模块来实现这些功能?

0 投票
1 回答
751 浏览

perl - 为什么智能匹配键 %h 失败并给出“参数不是数字”警告?

在下面的代码中,为什么第一个智能匹配失败并给出警告Argument "two" isn't numeric in smart match,而第二个智能匹配按预期工作(匹配)?

我意识到我可以使用

但我想知道为什么第一个 smartmatch 不能像我期望的那样工作。我正在使用 Perl 5.10.1。

0 投票
1 回答
129 浏览

perl - 当我在右侧使用范围运算符而不是数组时,为什么 smartmatch 返回不同的值?

为什么这个智能匹配返回 false

而这个返回真?

0 投票
1 回答
200 浏览

perl - Perl 中智能匹配的语法编译问题?

我似乎在用旧版本的 perl 编译我的 perl 脚本时遇到问题,我希望有人能帮助我。我最初编写和编译 perl 文件时没有出现问题的系统是使用 perl v5.16.3,我现在正在尝试编译和运行它的系统是使用 perl v5.8.5,我认为这就是问题所在。我知道在 v5.10 中对 ~~ 的使用方式进行了很多更改。v5.10 是第一个实际使用 ~~ 运算符的版本吗?

以下是我遇到语法错误的代码:

这是我得到的错误:

这是周围的代码,因此您可以更好地了解正在发生的事情:

所以基本上,我有一个散列哈希,基本上如果语句最终不匹配,它将从散列中删除它。我正在努力尝试升级服务器上的 perl,但仍在尝试获得批准。我是否正确假设这是由于使用了 perl 版本?

谢谢你。

0 投票
2 回答
213 浏览

perl - Perl 的智能匹配是否适用于混合字符串和已编译正则表达式的数组(或 arrayrefs)?

我希望使用 Perl 的智能匹配对包含字符串和已编译正则表达式的数组进行查找:

@global_excludes数组和$local_excludes数组引用都可以包含字符串或编译的正则表达式的混合。)

Perl 中的智能匹配有那么智能吗?目前,当我使用 v5.10.1 运行上述内容时,我得到:

为什么 smartmatch 认为这$file是一个数字?

现在,我只是手动操作:

exclude看起来像这样:

基本上,我希望使解决方案更加 Perly。

0 投票
1 回答
925 浏览

arrays - 使用智能匹配搜索数组的正确方法是什么?

我对 Perl 编程很陌生;我在搜索从外部文本文件创建的数组时遇到了困难。我正在寻找一种简单的方法来检查用户条目是否位于数组中。我以前使用过 Smart Match 功能,但从未在“if”语句中使用过,而且似乎无法让它工作。我是否错误地实现了这个函数,或者有没有更简单的方法来检查用户的字符串是否在数组中?

0 投票
1 回答
84 浏览

regex - 如何使用 smartmatch 检查字符串是否匹配数组中的所有模式?

我想检查一个字符串是否匹配多个正则表达式模式。我遇到了一个相关的问题,Brad Gilbert使用 smartmatch 运算符回答了这个问题:

如果任何模式匹配,则输入该if语句,但我想检查所有模式是否匹配。我怎样才能做到这一点?