Questions tagged «pattern-matching»

使用此标记可以解决有关测试数据结构在特定位置是否具有特定形状或包含特定值的问题。许多功能语言提供模式匹配构造。此标签中的大多数问题也应具有您正在使用的编程语言的标签。请勿将此标签用于常规表达问题,使用[regex] INSTEAD;同样,对于类似POSIX的shell中的模式匹配(globbing),请使用[glob]。

13
如何判断字符串是否在Python中重复?
我正在寻找一种方法来测试给定的字符串是否对整个字符串重复。 例子: [ '0045662100456621004566210045662100456621', # '00456621' '0072992700729927007299270072992700729927', # '00729927' '001443001443001443001443001443001443001443', # '001443' '037037037037037037037037037037037037037037037', # '037' '047619047619047619047619047619047619047619', # '047619' '002457002457002457002457002457002457002457', # '002457' '001221001221001221001221001221001221001221', # '001221' '001230012300123001230012300123001230012300123', # '00123' '0013947001394700139470013947001394700139470013947', # '0013947' '001001001001001001001001001001001001001001001001001', # '001' '001406469760900140646976090014064697609', # '0014064697609' ] 是重复的字符串,并且 [ '004608294930875576036866359447', '00469483568075117370892018779342723', '004739336492890995260663507109', '001508295625942684766214177978883861236802413273', '007518796992481203', '0071942446043165467625899280575539568345323741', '0434782608695652173913', '0344827586206896551724137931', '002481389578163771712158808933', '002932551319648093841642228739', '0035587188612099644128113879', …


2
“ x为空”和“ x ==空”有什么区别?
在C#7中,我们可以使用 if (x is null) return; 代替 if (x == null) return; 与旧方法相比,使用新方法(以前的示例)有什么优势? 语义有什么不同吗? 只是一个品味问题?如果没有,我什么时候应该使用另一个? 参考:C#7.0的新增功能。


4
Scala中的`:_ *`(冒号下划线星)是做什么的?
我从这个问题有以下代码: def addChild(n: Node, newChild: Node) = n match { case Elem(prefix, label, attribs, scope, child @ _*) => Elem(prefix, label, attribs, scope, child ++ newChild : _*) case _ => error("Can only add children to elements!") } 除以下内容外,其中的所有内容都很清楚: child ++ newChild : _* 它有什么作用? 我知道这里是Seq[Node]与另一个串联的Node,然后呢?怎么: _*办?

4
在Scala模式匹配系统中使用比较运算符
是否可以使用Scala中的模式匹配系统进行比较匹配?例如: a match { case 10 => println("ten") case _ > 10 => println("greater than ten") case _ => println("less than ten") } 第二种情况陈述是非法的,但我希望能够指定“当a大于时”。


5
Ruby Regexp组匹配,在1行上分配变量
我目前正在尝试将一个字符串重新表达为多个变量。示例字符串: ryan_string = "RyanOnRails: This is a test" 我已经将此正则表达式与3组匹配: ryan_group = ryan_string.scan(/(^.*)(:)(.*)/i) 现在要访问每个组,我必须执行以下操作: ryan_group[0][0] (first group) RyanOnRails ryan_group[0][1] (second group) : ryan_group[0][2] (third group) This is a test 这似乎很荒谬,而且感觉好像我做错了什么。我希望能够做这样的事情: g1, g2, g3 = ryan_string.scan(/(^.*)(:)(.*)/i) 这可能吗?还是有比我更好的方法呢?

3
Scala中的模式匹配如何在字节码级别实现?
Scala中的模式匹配如何在字节码级别实现? 它像一系列if (x instanceof Foo)结构,还是其他?它对性能有何影响? 例如,给定以下代码(来自Scala By Example第46-48页),该方法的等效Java代码将如何显示eval? abstract class Expr case class Number(n: Int) extends Expr case class Sum(e1: Expr, e2: Expr) extends Expr def eval(e: Expr): Int = e match { case Number(x) => x case Sum(l, r) => eval(l) + eval(r) } PS我可以读取Java字节码,因此字节码表示形式对我来说已经足够了,但其他读者可能更清楚知道它看起来像Java代码一样好。 PPS《Scala中的编程》一书是否对此问题以及有关如何实现Scala的类似问题给出了答案?我已订购这本书,但尚未到货。

9
如何在两个标记模式之间选择可能会用awk / sed多次出现的行
使用awk或sed如何选择出现在两个不同标记图案之间的线?可能会有多个部分标有这些模式。 例如:假设文件包含: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr stu 起始模式为abc,结束模式为,mno 所以我需要输出为: def1 ghi1 jkl1 def2 ghi2 jkl2 我使用sed一次匹配模式: sed -e '1,/abc/d' -e '/mno/,$d' <FILE> 有什么办法sed或awk 重复做直到文件结束?

1
为什么Scala中的模式匹配不适用于变量?
具有以下功能: def fMatch(s: String) = { s match { case "a" => println("It was a") case _ => println("It was something else") } } 这种模式很好地匹配: scala> fMatch("a") It was a scala> fMatch("b") It was something else 我想做的事情如下: def mMatch(s: String) = { val target: String = "a" s match { …

8
PostgreSQL LIKE查询性能差异
我已经看到有关LIKE对数据库中特定表的查询的响应时间差异很大。有时,我会在200-400毫秒内获得结果(非常可以接受),但其他时候可能需要多达30秒才能返回结果。 我了解LIKE查询非常耗费资源,但我只是不明白为什么响应时间会有如此大的差异。我已经在该owner1字段上建立了一个btree索引,但是我认为这对LIKE查询没有帮助。有人有主意吗? 示例SQL: SELECT gid, owner1 FORM parcels WHERE owner1 ILIKE '%someones name%' LIMIT 10 我也尝试过: SELECT gid, owner1 FROM parcels WHERE lower(owner1) LIKE lower('%someones name%') LIMIT 10 和: SELECT gid, owner1 FROM parcels WHERE lower(owner1) LIKE lower('someones name%') LIMIT 10 结果相似。 表格行数:约95,000。

3
匹配Scala中的多个案例类
我正在对某些案例类进行匹配,并希望以相同的方式处理两个案例。像这样: abstract class Foo case class A extends Foo case class B(s:String) extends Foo case class C(s:String) extends Foo def matcher(l: Foo): String = { l match { case A() => "A" case B(sb) | C(sc) => "B" case _ => "default" } } 但是当我这样做时,我得到了错误: (fragment of test.scala):10: error: illegal …

1
Elm编译器永远运行,计算机越来越热
我不确定是什么引起了这个问题,但是在一个正在构建的项目中,编译器仅花费几个小时就可以编译模块。我的代码库的总大小为352KB,但是没有一个模块的大小超过10KB。我正在使用本机端口,但这非常琐碎。我只是拿它Date.now()。 有什么众所周知的东西会导致elm编译器永久编译吗?我没有很多依赖关系,但是我经常使用HTML。我真的很感谢任何提示会导致这种情况。 编辑 因此,事实证明,大写表达式会导致优化器花费很长时间,从0.16开始。这是有关Elm-Discuss提出问题的讨论,以及令人讨厌的案例比赛的要点。 我猜是很冗长的,要保留一个胡萝卜,为什么榆木的编译器会采用这种方式进行大小写匹配?这里发生的底层机制是什么?为什么在case语句上优化60多个模式匹配,编译器会花费一个多小时?

3
PostgreSQL是否支持“不区分重音”的排序规则?
在Microsoft SQL Server中,可以指定“不区分重音”的排序规则(对于数据库,表或列),这意味着可以对诸如 SELECT * FROM users WHERE name LIKE 'João' 查找具有Joao名称的行。 我知道可以使用unaccent_string contrib函数从PostgreSQL的字符串中去除重音符号,但是我想知道PostgreSQL是否支持这些“不区分重音符号”的排序规则,因此SELECT上述方法可行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.