pattern-matching相关内容
例如,在下面的代码中,我是在模式匹配的情况下对模式进行匹配折叠机的“累加器”。我完全控制了累加器的内容,因为我创建了它(它不是作为输入传递给我的,而是在我的函数中构建的)。因此,我知道某些模式不应该与它匹配。如果我力求永远不会得到“模式匹配是非详尽的”错误,那么我会为它添加一个模式匹配,只是错误与消息“此模式不应该发生”。就像C#中的断言一样。在这种情况下,你会推荐什么样的做法?为什么? 我
..
抽象类Shape 案例类Rectangle(width:Int ,height:Int)extends Shape case class Location(x:Int,y:Int,shape:Shape)extends Shape case class Circle(radius:Int)extends Shape case class Group (shape:Shape *)ex
..
在诸如SML,Erlang和其他语言的语言中,我们可以定义这样的函数: fun reverse [] = [] |反向x :: xs =反向xs @ [x]; 我知道我们可以像这样在Scala中编写模拟(我知道,这里有很多缺陷代码如下): $ $ p $ code def def [T](lst:List [T]):List [T] = lst match {
..
我在SML中编写了一个任务,我做了一些练习题,我觉得我错过了一些东西 - 我觉得我正在使用太多的 case 语句。以下是我正在做的以及我遇到问题时的问题陈述: 编写一个函数all_except_option,它接受一个字符串和一个字符串列表。如果字符串不在列表中,则返回NONE,否则返回SOME lst,其中lst与参数列表类似,但字符串不在其中。 fun all_except_op
..
我对F#完全陌生(通常是函数式编程),但我看到示例代码中随处可见的模式匹配。我想知道如何模式匹配实际工作?例如,我想象它与其他语言的for循环一样工作,并检查集合中每个项目的匹配。这可能远不是正确的,它是如何在幕后工作的? 解决方案 这要看是什么样的模式匹配你的意思 - 这是相当强大的构造,可以在各种使用方法。但是,我会尝试解释模式匹配如何在列表上工作。您可以编写例如这些模式: m
..
我正在为使用OCaml设计的函数式语言编写一个编译器。我希望我的小语言具有模式匹配功能,但是,我陷入了一种实现它的算法。我深入研究这个问题似乎很复杂。我找不到有关google的相应算法的很多有用信息。如果有人能给我一些提示或指向我的资源,我将不胜感激。或者是否有任何技巧利用OCaml在模式匹配中的能力来解决这个问题,这样我就不需要实现它了?谢谢! 解决方案 有几篇关于OCaml背后的人员编译
..
只是澄清,当我说多个assigment,并行赋值,解构绑定我的意思是以下模式匹配宝石 scala> ; val(x,y)= Tuple2(“one”,1) x:java.lang.String = 1 y:Int = 1 $ b $ p 它将“one”分配给 x 和 1 到 y 。 我正在尝试 p> val(x,y)=“ab”.split()
..
可能重复: 变量名称x和xs的历史记录是什么? 模式匹配中的规范名称“xs”来自哪里? 例如。在 reverse'[] = [] reverse'[x] = [x] reverse '(x:xs)= reverse'xs ++ [x] 它应该是复数“x”? 解决方案 这是我一直阅读的方式,你有单数和复数,所以 x:xs 或 y:ys 等。
..
大家都说模式匹配是函数式语言的一大特色。为什么? 我不能简单地使用ifs和切换所有内容吗? 我想理解使用模式匹配而不是常规过程编程的优点ifs和switch case 解决方案 我首先想说明你不要使用模式匹配“替代”switch语句。 Scala没有 switch 语句,它具有的是匹配块,表面上看起来与switch语句非常相似。 使用模式匹配匹配块可以完成 switch
..
我在列表上进行模式匹配。无论如何,我可以访问列表的第一个和最后一个元素进行比较? 我想做类似的事情。 case List x,_ *,y)if(x == y)=> true 或 case x :: _ * :: y => 或类似的东西... 其中 x 和 y 是列表中的第一个和最后一个元素.. 我该怎么做..任何想法? sc
..
我试过寻找一个简单的解释,但我还没有找到一个。 编辑: 有人标记为家庭作业。我不再去上学了,我只是在学习Haskell,我正试图理解这个概念。纯粹是出于兴趣。 解决方案 简而言之,模式就像在数学中定义分段函数一样。您可以使用模式为不同的参数指定不同的函数体。当你调用一个函数时,通过比较实际参数和各种参数模式来选择合适的体。阅读 Haskell简介获取更多信息。 比较:
..
我只是想知道是否可以用函数式编程语言(Haskell / F#/ Caml)的模式匹配工具多次匹配相同的值。 请考虑下面的例子: 加上aa = 2 * a 加上ab = a + b 当函数被两个相似的值调用时,第一个变体会被调用(它将被存储在 更有用的应用程序就是这样(简化AST)。 simplify(Add aa)= Mult 2 a
..
我想模式匹配一个函数,问题是类型擦除。请注意,在下面的代码段中,尽管发生了警告,但发生了匹配,并且发生了“错误”的一次。 阶> def f1 =()=> true f1:()=>布尔 scala> val fl = f1 fl:()=>布尔= scala> scala> fl match { | case fp:Functio
..
在Elixir中,我将如何为一个函数创建一个新的守卫子句?显然,我已经看到,当语句时,你不能在中调用任何函数,但是能够做到这样的事情会很好: defmodule Player do def play_card(player),do:[] def play_card(player)has_cards(player)球员),做:... #定义has_cards作为守卫子句? en
..
我希望将输入字符串匹配到我的PHP页面,就像SQL(MySQL)中的LIKE命令所做的匹配一样,以实现其他搜索的一致性。既然(我已经看到但不理解),一些PHP语法包括SQL命令,我想知道这是否可能? 原因是我现在实现一个关键字与数据库中存储在序列化数组中的字段的搜索,我必须根据数组结构在PHP中进行反序列化并进行搜索。我无法查询表格,只需要查询的匹配能力。否则,我需要找到一个替代匹配例程,这
..
我需要从某个用户输入一个确定的数字来插入一个输入元素数字,让我们说数字9,在文本或密码字段中,以任何格式.. 我怎么能使用HTML5或任何其他方式? 如果我有这样的代码:
..
我有一个数据框与一些布尔值(1/0)如下(抱歉,我不知道如何把它做成一个聪明的表) Flag1.Sam Flag2.Sam Flag3.Sam Flag1.Ted Flag2.Ted Flag3.Ted probe1 0 1 0 1 0 0 probe2 0 0 0 0 0 0 probe3 1 0 0 0 0 0 probe4 0 0 0 0 0 0 probe5 1
..
scala>在 val a = Seq(Some(1),None) a:Seq [Option [Int]] = List(一些(1),None) scala> for(Some(x) for(None
..
IntelliJ给了我一个关于下面的代码的提示: $ b $ pre $ val $ l List(0,“1”,2, “3”) l.foreach {_ match {case xx:Int => println(xx); case _ =>}} 函数“ 当我将foreach更改为 l.foreach {case x:Int => println(x)}
..
假设 Flask Routes不是从上到下模式匹配,如何处理以下问题? 我有以下路线: $ ol / / close / /
..