3

私は最初の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())
4

1 に答える 1

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をご覧ください。

于 2012-04-26T08:41:34.377 に答える