pattern-matching - Opa 匹配模式或

标签 pattern-matching opa

我正在编写我的第一个 Opa 应用程序。我正在尝试为 url 处理设置匹配项。代码如下:

function start(url) 
{
    match (url)
    {
        case {path:[] ...}: Resource.page("Home", home())
        case {...}: Resource.page("nofindy", nofindy())
    }
}
Server.start(Server.http, { dispatch: start })

它就像一个魅力,但现在我希望能够进行同义映射。例如,我希望不仅可以有/转到主页,还可以有/home。

是否有一种简洁的方法可以做到这一点,也许使用 OR 运算符,或者我是否需要设置单独的案例来触发相同的资源?

tl;dr:是否有更好的方法来编写以下代码段:

case {path:[] ...}: Resource.page("Home", home())
case {path:["home"] ...}: Resource.page("Home", home())

最佳答案

你应该使用custom而不是dispatch:

function start(v){
   Resource.page(v, <h1>{v}</h1>)
} 

urls = parser {
   case ("/" | "/home") : start("home")
   case .* : start("other")
}

Server.start(Server.http, {custom: urls})

在此处了解有关解析器的更多信息:http://doc.opalang.org/manual/The-core-language/Parser

关于pattern-matching - Opa 匹配模式或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326881/

相关文章:

ocaml - opa 扩展可以用 Ocaml 编写吗?

f# - 匹配可区分联合时的类型通配符

scala - 为未使用的变量使用占位符时出现 MatchError

ocaml - Opa 的基于图形的数据库是否单独提供?

opa - 为什么 Opa 语言中需要 'do'?

opa - Opa 如何处理客户端和服务器之间的通信?

opa - 如何在OPA中解析DOM?

ruby-on-rails - 如何将整个单词与 Aho corasick 匹配?

java - 模式语法异常,索引 0 附近的悬挂元字符 '+'

模式匹配中的Scala隐式提取值?