pattern-matching相关内容

如何基于动态变量进行匹配?

是否可以匹配动态变量而不是仅匹配文字? 在此代码中,第一个match应该与注释掉的match(number[0]Being0和number[1]Being1)相同: const NUMBERS: [i8; 2] = [0, 1]; fn test() { let current = 5; let string = match current % 2 { ..
发布时间:2022-06-27 11:32:07 其他开发

Python 3.10模式匹配(PEP 634)-字符串中的通配符

我得到了一个很大的JSON对象列表,我希望根据其中一个键的开始来解析它们,并且只使用通配符睡觉。很多键都很相似,比如"matchme-foo"和"matchme-bar"。有一个内置通配符,但它只用于整数值,有点像else。 我可能忽略了一些东西,但我在提案中找不到解决方案: https://docs.python.org/3/whatsnew/3.10.html#pep-634-st ..
发布时间:2022-02-26 15:57:58 Python

UNIX CASE语句中的模式匹配

我使用的shell脚本需要区分tar.gz、gz|bz等。 我首先提取文件的扩展名,然后尝试使用case进行匹配,我的第一个案例是*tar*,它应该将文件与其扩展名中的tar相匹配,因为它们可以使用相同的命令提取。 问题是我尝试匹配gzbz2等的下一组语句。我需要匹配bz或gz2的大小写模式,但同时还要检查扩展中是否没有tar。 我对外壳模式匹配一无所知,我写了这个[!(tar) ..
发布时间:2022-02-26 15:52:48 服务器开发

非穷举模式匹配仅仅是因为我省略了`否则=`?

我用Haskell编写了一个简单的程序,播放the guessing game described in The Rust Programming Language book: 它的工作原理是这样的:程序将生成一个介于1和100之间的随机整数。然后,它会提示玩家输入一个猜测。输入猜测后,它将指示猜测是过低还是过高。如果猜测正确,游戏将打印祝贺并退出。 这是我写的: import ..
发布时间:2022-02-26 15:47:37 其他开发

在Rust中,将非引用与引用进行模式匹配有什么作用?

对具有不包括引用的模式的引用进行模式匹配时会发生什么情况? 以下是使用结构模式的示例: fn main() { struct S(u32); let S(x) = &S(2); // type of x is `&u32` } 我对此行为感到惊讶,因为左侧的模式与右侧的数据似乎不匹配,而不像&中的&排列。 看起来是这样的,当RHS是结构引用,而LHS是 ..
发布时间:2022-02-26 15:46:24 其他开发

如何找出一段音频在另一段音频中开始和结束的时间?

我有两个音频文件,其中一个句子由两个不同的人朗读(就像唱一首歌一样)。所以它们有不同的长度。他们只是发声,里面没有乐器。 A1:音频文件1 A2:音频文件2 例句:“Lorem ipsum door sit amet,.” 我知道每个单词以A1开头和结尾的时间。我需要自动找出A2中每个单词的开始和结束时间。(任何语言,最好是Python或C#) 时间以XML格式保存。所以,我 ..
发布时间:2022-02-26 15:43:21 其他开发

如何转义Lua中的变量

有没有办法转义Lua中的整个变量?点赞: local blah = some_pattern string.gsub(blah, "-", "%-") 变量“blah”更改,并在另一个模式匹配中的其他位置使用。只要“blah”中有魔术字符,在别处完成的第二个模式匹配就会失败。 所以我至少需要处理转义“blah”中的各种魔术字符。 提前感谢! 推荐答案 这里有点不清 ..
发布时间:2022-02-22 11:52:22 其他开发

如何比较二值模式图像的两个轮廓?

我正在用 C 语言创建一个零件扫描仪,它将扫描零件的所有可能性作为图像提取到目录中.我的代码当前从该目录中获取所有图像并将它们转储到向量中.然后我为所有图像生成轮廓组.然后程序进入一个while循环,它不断地从网络摄像头中抓取图像,并为这些图像生成轮廓.我已经为零件设置了一个夹具,因此方向和尺寸不是问题,但是我不想校准机器,因此模板图像和拍摄的零件图像之间可能存在移动. 比较轮廓的最佳方法是 ..
发布时间:2022-01-25 09:47:54 其他开发

范围可以在 Scala 中匹配吗?

是否可以在 Scala 中匹配一系列值? 例如: val t = 5val m = t 匹配 {0 到 10 =>真的_ =>错误的} 如果 t 介于 0 和 10 之间,则 m 将为 true,否则为 false.这一点当然是行不通的,但是有没有什么办法可以实现呢? 解决方案 Guard using Range: val m = t 匹配 {如果 0 到 10 包含 x = ..
发布时间:2022-01-24 19:37:12 其他开发

如何在 Scala 中的范围内进行模式匹配?

在 Ruby 中我可以这样写: 案例 n当 0...5 则“小于 5"当 5...10 然后“小于十"否则“很多"结尾 如何在 Scala 中做到这一点? 编辑:最好比使用 if 更优雅. 解决方案 内部模式匹配可以用守卫表示: n 匹配 {如果 0 到 5 包含它,则为它的大小写 =>“不到五个"如果 5 到 10 包含它,则为它 =>“不到十个"案例_=>“很多"} ..
发布时间:2022-01-24 19:29:58 其他开发