に実行フローを理解することができませんでしhttps://www.lagomframework.com/documentation/1.3.x/scala/ServiceImplementation.html私はこのチュートリアルで、次のいlagom
を私は次のようにログインして使用ログに記録されたサービス
//logged takes a ServerServiceCall as argument (serviceCall) and returns a ServerServiceCall.
//ServerServiceCall's compose method creates (composes) another ServerServiceCall
//we are returing the same ServerServiceCall that we received but are logging it using println
def logged[Request,Response](serviceCall:ServerServiceCall[Request,Response]) = {
println("inside logged");
//return new ServerServiceCall after logging request method and uri
ServerServiceCall.compose({
requestHeader=>println(s"Received ${requestHeader.method} ${requestHeader.uri}")
serviceCall
}
)}
を作成しました最初に印刷されてから記録されますが、それは逆でした。関数に渡された引数が最初に評価されるべきではありませんか?
私はこれを手に入れました。どうして?
inside logged Received POST /hello3 inside ssc
コードを試したいと思っていましたが、コンパイルできませんでした。( –
まだコードをコンプリートしていますが、いくつかの質問が残っています(scalaの知識が限られています) - 1. hello3が呼び出されるのはいつですか? actualServiceCallを作成するときに、ServerServiceCall内のコードを実行しませんか?どうして?この時点でServerServiceCallのオブジェクトのみが作成されますか?ブロックに渡されたコードは、lagomがその呼び出し関数を使用するときに実行されますか? 3)serviceCallが作成されたときにserviceCallが渡されたコードのブロックを実行しましたか? –
ああ!私の疑問の一部は、ここでは最初のパラ自体 - https://www.lagomframework.com/documentation/1.3.x/scala/ServiceImplementation.htmlで説明されています。しかし、コードをコンパイルすることはできません。( –