小编ash*_*ash的帖子

匹配在传染媒介的铁锈样式

教程展示了一些非常基本的模式匹配示例,例如匹配整数以模拟c风格的switch语句.本教程还演示了如何对元组类型和解构结构进行基本的解构.

看起来应该可以在矢量上进行模式匹配,但是我无法找到它的正确语法,我还没有找到它的任何例子.

例如,在Haskell中,您可以轻松地对列表进行构造:

foldr :: (a -> b -> b) -> b -> [a] -> b
foldr func initValue []     = initValue
foldr func initValue (x:xs) = func initValue $ foldr initValue func xs
Run Code Online (Sandbox Code Playgroud)

所以,看一个粗略的翻译,能够这样做会很高兴:

fn foldr<A, B>(func: fn(A, B) -> B,
               initValue: B,
               vals: [A]) -> B {
  alt vals {
    [] { ret initValue; }
    _  {
      let h = vec::head(vals),
          t = vec::tail(vals);
      ret foldr(func, func(initValue, h), t);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:我知道你可以在这里使用if语句,我只是将它作为矢量模式匹配的一个例子.

目前返回:

patterns.rs:10:4: 10:5 …
Run Code Online (Sandbox Code Playgroud)

vector pattern-matching rust rust-obsolete

12
推荐指数
2
解决办法
7370
查看次数

标签 统计

pattern-matching ×1

rust ×1

rust-obsolete ×1

vector ×1