Opa匹配模式或

时间:2012-04-26 03:38:34

标签: 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())

1 个答案:

答案 0 :(得分:3)

您应该使用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