match 相关问题

关于基于某种搜索查找结果的编程概念。通常在谈论正则表达式时使用。

匹配多个盒装值

我有以下代码,可以正常编译 #[导出(调试、PartialEq、克隆)] pub 枚举表达式 { 常量(i32), 负(方框), 添加(框,框 我有以下代码,可以正常编译 #[derive(Debug, PartialEq, Clone)] pub enum Expression { Const(i32), Neg(Box<Expression>), Add(Box<Expression>, Box<Expression>), } fn simplify(expr: &Expression) -> Expression { match expr { Expression::Neg(x) => match **x { Expression::Const(n) => Expression::Const(-n), _ => expr.clone() }, // GIVES ERROR // Expression::Add(x, y) => match (**x, **y) { // (Expression::Const(n), Expression::Const(m)) => Expression::Const(n + m), // _ => expr.clone() // }, Expression::Add(x, y) => match **x { Expression::Const(n) => match **y { Expression::Const(m) => Expression::Const(n + m), _ => expr.clone() } _ => expr.clone() } _ => expr.clone() } } 但是,如果我用注释掉的版本替换 Expression::Add 臂,则会出现以下编译器错误 error[E0507]: cannot move out of `**x` which is behind a shared reference --> src/lib.rs:21:41 | 21 | Expression::Add(x, y) => match (**x, **y) { | ^^^ move occurs because `**x` has type `Expression`, which does not implement the `Copy` trait error[E0507]: cannot move out of `**y` which is behind a shared reference --> src/lib.rs:21:46 | 21 | Expression::Add(x, y) => match (**x, **y) { | ^^^ move occurs because `**y` has type `Expression`, which does not implement the `Copy` trait For more information about this error, try `rustc --explain E0507`. 是否有理由我们可以与单独的 **x 匹配,但不能在像 (**x, **y) 这样的元组中匹配?前者实际上是被转换还是隐藏了一些语法糖?有没有比两个嵌套匹配更简单的方法来编写这个 Add 臂? 编辑:我还看到有一个 ref 关键字,它应该解决类似的问题,但是将我的元组匹配表达式更改为 (ref **x, ref **y) 会产生语法错误(error: expected expression, found keyword ref)。 TL;DR: 与 (&**x, &**y) 比赛。 这里发生的事情很有趣。 TL;DR 是:当您 match v {} 时,您不会阅读 v。您为 v 创建了一个 地方。 A place 是我们可以阅读的东西。或者写信给。或者什么也不做。重要的是,仅仅创造场所并不涉及这样的操作。您可以稍后读/写它,但是当您创建它时,它只是一个地方。 在您的 match 中,x 和 y 的类型为 &Box<Expression>。当我们match **x时,我们不读x。因此,我们也不会移动**x。我们所做的是为**x创造一个地方。然后我们将这个地方与 Expression::Const(n) 进行匹配。现在我们读取 x 并从中提取 n。但是 n 是 i32 - Copy - 所以这很好。 相反,当您使用元组 (**x, **y) 时,由于您不直接与 **x 和 **y 匹配,因此您确实会读取它们。因为你读了它们,而它们不是 Copy (Expression),所以你就离开了它们。现在这是一个错误,因为您无法移出共享引用。您之后匹配它们,但它们已经移动了。 你可以试试match(x.as_ref(),y.as_ref())

回答 2 投票 0

如何在Python 3.10中的Match(其他语言中切换)cases中使用多个case

我正在尝试在类似于下面所示的函数中使用多个案例,以便我能够使用 python 3.10 中的匹配案例来执行多个案例 def sayHi(名字): 比赛名称: ...

回答 2 投票 0

使用 sed 在文件中的第 n 行模式后插入字符串

我想使用 sed 在模式后的第 n 行之后插入单词。 我绑定了修改此命令,但它仅插入到模式之后的第一行中。 sed -i '/myPattern/a \ LineIWantToinser ' myFile 什么

回答 3 投票 0

如果单元格包含多个文本字符串的部分匹配,则应用条件格式VBA

当前能够对 H:H 等列范围进行 VBA 搜索,并在 H:H 中的任何单元格与单元格 A1(可能是“LTD”)部分匹配时应用条件格式。不过,我

回答 2 投票 0

julia Match.jl 与日期匹配错误 - 模式需要 3 个字段

刚刚更新了我的项目部门,并使用 Match.jl @match 语句收到此错误。 错误:“Dates.Date”类型有 1 个字段,但该模式需要 3 个字段。 @比赛开始日期 日期(...

回答 1 投票 0

需要有人帮助我理解这两个解决方案 - 映射、归约、匹配、正则表达式

说明: 我今天一直在玩Codinggames,并在代码冲突中遇到了这个问题。 问题: 给定一个单词,根据它在该单词中的位置输出该单词的索引之和...

回答 1 投票 0

R:“match”与列表的行为不一致

match 会给出不一致的结果: 匹配(列表(c(1, 2)),列表(c(1L, 2L))) #> [1] 不适用 匹配(列表(c(1, 3)),列表(c(1L, 3L))) #> [1] 1 到底发生了什么……

回答 1 投票 0

嵌套 string.gmatch 语法格式

我正在努力解决一些嵌套的gmatch函数(使用Lua代码等效) 假设我有 (3) 个结构,每个结构都可以提高随机技能动作; [“建筑1”] = {效果=“+1改善

回答 1 投票 0

LUA 嵌套 string.gmatch 语法格式

我正在努力解决一些嵌套的 gmatch 函数(使用等效的 LUA 代码) 假设我有 (3) 个结构,每个结构都可以提高随机技能动作; [“建筑1”] = {效果=“+1改善

回答 1 投票 0

为什么我在 Python 中使用 match 时收到错误消息?

当我键入“匹配”一词时,我在 Python 中收到语法错误。我什至有最新版本的Python 3.11.4 http_状态 = 200 如果 http_status == 200 或 http_status == 201: 打印(“是...

回答 0 投票 0

跨数据帧匹配列名称并添加新变量

数据<- rbind(c(1,2,3,4,5,6), c(1,2,3,4,5,6), c(1,2,3,4,5,6)) colnames(data) <- c("A", "B", "C", "D", "E", "F&

回答 1 投票 0

如何在Golang中实现Python的mock ANY

我希望能够比较两个字典,同时忽略某些字段的值。在Python 中使用mock.ANY 这非常容易。 从unittest.mock导入任何 实际 = {'用户名':'鲍勃', '

回答 0 投票 0

如果多个匹配,MATCH 会产生相同的结果

致力于工作中使用的电子表格的自动化部分,但似乎无法解决这个问题。 https://imgur.com/a/nq3RGLv 左边有车道号和每条车道的计数。就在...

回答 2 投票 0

匹配数字来掩盖它

我有一个如下所示的文本文件。它是一个基于位置的文本文件。 13 到 30 的位置代表银行帐号,如果存在帐号,需要用星号屏蔽。什么是最好的...

回答 4 投票 0

python 匹配大小写 - 与函数返回的结果进行比较

我正在使用 pysimplegui 和事件侦听器循环,将事件与函数返回进行比较。函数返回字符串 - 我可以使用 match 代替吗? 像这样的东西: 窗口 = main_window()...

回答 2 投票 0

如何从类别列表中返回正确的类别。当单词不完全匹配时?

我有一个类别列表,这是列表,它包含在下拉列表中。这是第一栏 产品类别 指甲 螺丝 螺栓 坚果 锚 史泰博 垫圈 套 粉末负载 铆钉 铆钉工具 ...

回答 1 投票 0

匹配 case 语句在不应该改变输入时改变输入

我正在使用当前函数来确保没有任何数组元素以特定的 2 个变量开头: def checkDuplicates(x, y, 数组): 对于数组中的 l: 匹配l: 案例...

回答 0 投票 0

条件MODE函数的自变量

将 {0,0} 添加到 MATCH(...) 函数以成为条件 MODE Excel 函数的 value_if_true 部分的目的是什么? 模式(IF(COUNTIF(...)=0,匹配(...,...,0)+{0,0})) 现在这个组合是

回答 0 投票 0

如何将下划线视为空格提取文档编号

发票词有时由下划线字符 (_) 分隔或代替空格: ... 注册号_11687767_KMKR_EE101308591 发票编号 M230714_一些文字 基耶杜斯 ... 有时...

回答 0 投票 0

如果让 match 表达式在 rust 中如何组合

//这是我的代码。它是一个温度转换器,输入开尔文、摄氏度或华氏度,并输出相应相反单位的转换值。 // 问题: // 它会问值 fi...

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.