2016-03-23 7 views
3

私は問題を示すようにして、それを最悪にしました。複雑なコードを与えることができます。スカラのタプルパラメータとしての機能

ように私は、関数を呼び出している:私は

def noop: Unit = {} 
val promiseSchedule = Promise[(FiniteDuration, FiniteDuration, => Unit)]() 
mySchedule(
    config, 
    {... promiseSchedule.success((initialDelay, interval, f))} 
)(noop) 

promiseSchedule.future.value must be_==(...) 

ような何かをして喜んでいたテストを行うための

def mySchedule(config: MyConfig, cb: (FiniteDuration, FiniteDuration) => (=> Unit) => Cancellable)(f : => Unit) = { 
    val initialDelay = ... 
    val interval = ... 
    cb(initialDelay, interval)(f) 
} 

:関数は同じように定義されて

mySchedule(config, actorSystem.scheduler.schedule) { 
    ... 
} 

どのように私はこの作品を作るのですか?

+0

それの代わりに 'Unit'の'単位=> Unit'ください – Dima

+6

'Unit => Unit'にしないで'()=> Unit'にしてください。 最初のものは 'Function1 [Unit、Unit]'であり、2つ目は 'Function0 [Unit]'(パラメータなし関数)です。 – ghik

答えて

3

はそれを試してみてください。(念のクラスのように)タプルのconstructiorのすべてのメンバーがヴァルスあるため

def noop(): Unit = {} 
val promiseSchedule = Promise[(Int,() => Unit)]() 
// ... 
promiseSchedule.success((1, noop)) 

理由があります。
そして、名前での呼び出しをvalに格納するのではなく、その値または関数だけを格納することはできません。質問が回答されているが

乾杯

関連する問題