标签: pattern-matching

正则表达式模式连接

有可能以某种方式连接这个:

my $ pattern1 = qr/^/;
Run Code Online (Sandbox Code Playgroud)

有了这个:

my $ pattern2 = qr/ABC/
Run Code Online (Sandbox Code Playgroud)

所以我得到(这个值)?

qr/^ABC/
Run Code Online (Sandbox Code Playgroud)

语法可能不同,我只是想实现这个结果.

regex perl concatenation pattern-matching

0
推荐指数
1
解决办法
2273
查看次数

如何正确编写模式匹配?

以下代码有效:

data MyList a = Atom a | Cons a (MyList a) deriving (Show)

getAtom (Atom a) = a

myFindMax :: (Ord a) => MyList a -> a 
myFindMax (Cons x xs) = let restMax = myFindMax xs in
                          if x > restMax then x else restMax
myFindMax x = getAtom x
Run Code Online (Sandbox Code Playgroud)

但是当我写作

myFindMax (Atom x) = getAtom x
Run Code Online (Sandbox Code Playgroud)

在其他模式之前,我得到了错误

Couldn't match expected type ‘MyList a’ with actual type ‘a’
      ‘a’ is a rigid type variable bound by
          the type …
Run Code Online (Sandbox Code Playgroud)

haskell pattern-matching

0
推荐指数
1
解决办法
51
查看次数

从R中的字符串中提取带有子子串的模式

我有一组像

data <- c("ABS Spring Meeting 5.14.15", "DEFG Sellors Tour 10.28.14", "DDCC Fun at the Museum 4.4.15", "GAME CS vs. Washington 11.01.14", "BSS Studio 54 5.13.15","Pas-12 3.5.15")
Run Code Online (Sandbox Code Playgroud)

您可以注意到,最后一组数字是事件日期.我想把它们转换成日期

date <- c("2015-05-14","2014-10-28","2015-04-04","2014-11-01","2015-05-13","2015-03-05")
Run Code Online (Sandbox Code Playgroud)

感觉我必须将这种类型("5.14.15","10.28.14","4.4.15","11.01.14","5.13.15","3.5.15")子串到子模式,然后做转换日期.

谁能帮我这个?谢谢!

regex substring r date pattern-matching

0
推荐指数
1
解决办法
401
查看次数

将一种类型的可选项简单映射到另一种类型(如果存在)?

所以我有一堆采用这种格式的案例类:

case class A(value: String)
case class B(value: String)
case class C(value: String)
Run Code Online (Sandbox Code Playgroud)

我在函数中接受了几个Option [String]值作为参数,如果参数中的值不是None,我想创建Option [A],Option [B].

我现在这样做:

val first = parameterOptional match {
    case Some(theStringValue) => Some(A))
    case None => None
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我想知道是否有更简洁的方法来做到这一点,我对Scala很新.

示例中的变量名称显然已被更改.

谢谢

scala pattern-matching for-comprehension spray

0
推荐指数
1
解决办法
81
查看次数

匹配列表后修复类型擦除

考虑以下递归函数:

def example (param: List[Int]): Int = {
    case Nil => 0
    case x :: xs => example(xs)
}
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

type mismatch;
[error]  found   : List[Any]
[error]  required: List[Int]
Run Code Online (Sandbox Code Playgroud)

从参数声明中可以清楚地看出,分解的结果将是a Int和a List[Int],但显然编译器并不这么认为.我怎样才能做到这一点?

scala pattern-matching

0
推荐指数
1
解决办法
43
查看次数

Python:如何检查字符串是否包含特定范围内的数字

我有很多字符串; 它们基本上是文件名.格式如下:

["abcdedf_023.txt",
 "foeoioo_011.txt", 
 "sdjskdsjd_3131.txt", 
 "dsdsdsrer_044.txt", 
 "rgfbfgrt_12.txt"]
Run Code Online (Sandbox Code Playgroud)

等等.

我需要的是过滤掉包含大于15末尾的数字的名称.因此,通过上述输入,所需的输出将是:

["abcdedf_023.txt",
 "sdjskdsjd_3131.txt", 
 "dsdsdsrer_044.txt"] 
Run Code Online (Sandbox Code Playgroud)

该数字(15)不是固定的,并且由用户提供作为输入.

python regex string pattern-matching

0
推荐指数
1
解决办法
1721
查看次数

在F#中使用模式匹配的最佳方法是什么?

创建一个带有两个参数的函数,一个整数和一个五元素的整数元组,如果元组的任何三个元素的总和大于第一个参数,则返回true,否则返回false.

let func el tupl =
    match tupl with
    |(a,b,c,d,e) when (a+b+c) > el || (a+d+e) > el || (b+c+d)> el || (b+c+e) > el -> true
    | _-> false
Run Code Online (Sandbox Code Playgroud)

f# tuples inline pattern-matching

0
推荐指数
1
解决办法
109
查看次数

使Haskell List Recursion函数更有效

我编写了一个函数,它将比较两个列表并检查第一个是否是第二个的前缀,并且必须使用递归完成.

例如:

prefix [1,2] [1,2,3]
>True
prefix [2,1,4] [2,1,13,4]
>False
Run Code Online (Sandbox Code Playgroud)

现在我已经做到了这一点,但我觉得它效率低下:

prefix :: [Int] -> [Int] -> Bool
prefix (x:xs) (y:ys)
|   null xs                         =   True
|   x == y && head xs == head ys    =   True && prefix xs ys
|   head xs /= head ys              =   False
Run Code Online (Sandbox Code Playgroud)

我希望它可以更有效地完成,并有一些更好的模式匹配.是真的吗?

recursion haskell boolean list pattern-matching

0
推荐指数
1
解决办法
138
查看次数

Haskell - 模式匹配:如何根据两个输入值确定要使用的模式

好的,所以我正在学习Haskell的基础知识,最近我做了一个模拟考试,其中一个问题是使用模式匹配和通配符作为函数的一部分来生成不同的结果.创建的函数如下:

fun x _ = 1
fun _ 0 = 2
fun x y = 3
Run Code Online (Sandbox Code Playgroud)

现在的问题是添加乐趣0 0 + fun 1 0这两者显然都匹配生成1的模式.

但是我看不出它是如何工作的,就像我看到的那样,任何输入值都可以使用它们中的任何一种模式.

我很可能看错了,所以任何人都可以通过这个问题跟我说话,为什么乐趣0 0乐趣1都生成1?当加在一起时,当然会给出结果2.

haskell functional-programming wildcard pattern-matching

0
推荐指数
1
解决办法
419
查看次数

与列表模式比较

首先考虑以下代码,它计算字符串中的空格数:

countSpaces :: String -> Int
countSpaces [] = 0
countSpaces (c : restOfString)
    = d + countSpaces restOfString
       where d = if c == ’ ’ then 1
                             else 0
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

1,如果我拨打电话:countSpaces "abc",那么当这个函数试图匹配字符串会发生什么"abc"(c: restOfString).我的意思restOfString是:"abc"在这次通话中,但是这是(c:restOfString)什么?你正在"勉强"某事(变量?c)restOfstring 然后你想要匹配?我只是不明白.

2,我尝试运行代码但是我得到一个解析错误为什么?

输入'''上的解析错误

3,这个函数会调用countSpaces 无穷大吗?因为restOfString总是相同而不是减少,例如.countSpaces "aaa"第一次通话,第二次或任何通话后拨打电话都不会改变,对吧?

  • 之后添加*

现在考虑完成相同任务的代码:

countSpaces :: String -> Int
countSpaces [] = 0
countSpaces (’ ’ : restOfString)
        = 1 + …
Run Code Online (Sandbox Code Playgroud)

haskell pattern-matching

0
推荐指数
1
解决办法
144
查看次数