メソッド署名が以下の "counter"という名前のメソッドを実装しようとしているScala初心者。スカラ:返されたメソッド内のcount変数の別の状態
このメソッドは、整数nで呼び出されたときにステートフルな関数を返すように、ステートレス関数でなければなりません。このステートフル関数は、最初に呼び出された後にn、次にn + 1、次にn + 2などを返す必要があります。
カウンタは独立していなければならず、カウンタ(1)を2回実行すると、他の州。
val counter : Int =>() => Int = {
// Complete definition below.
var count = 0
n: Int =>() => {
var returnVal = n + count
count = count + 1
returnVal
}
}
カウンタが呼び出された方法の例:以下は
は、私がこれまで持っているものであるassert ({
val k1 :() => Int = counter (1)
val k2 :() => Int = counter (2)
val r1 : Int = k1()
val r2 : Int = k1()
val r3 : Int = k2()
val r4 : Int = k2()
val r5 : Int = k2()
val r6 : Int = k1()
(r1, r2, r3, r4, r5, r6)
} === (1, 2, 2, 3, 4, 3)
)
アサートを実行し、カウンタ戻る(1、2、4の私の実装、5,6,6)。
これは、k1とk2の両方が同じカウント変数を指しているためだと思います。しかし、どのようにk1とk2に別々のカウント変数を与えるかを理解することができないので、要件に応じて「お互いの状態を干渉しない」ことができます。
私は適切なトラックにいますか?どのような指針が最も高く評価されます。 val
で、数変数は唯一、ユーザーが定義したときにたまたま一度定義されているので
def counter : Int =>() => Int = {
// Complete definition below.
var count = 0
n: Int =>() => {
var returnVal = n + count
count = count + 1
returnVal
}
}
:あなたが定義しているカウンタ方法はdef
へval
からキーワードを変更する必要が
これは完全に機能しました。ありがとうございました! – shoogazer
ここでは大したことではありませんが、 'returnVal'を' val'にします。 –
良いコール@ジャスパー-M。 – bergren2