메서드 서명이 아래에있는 "counter"라는 메서드를 구현하려고하는 스칼라 새내기.스칼라 : 반환 된 메서드 내에서 count 변수의 개별 상태
메서드는 상태가없는 함수 여야하므로 정수 n을 사용하여 호출 할 때 상태 저장 함수를 반환합니다. 이 상태 저장 함수는 처음 호출 될 때 n을 반환하고 n + 1, n + 2 등을 반환해야합니다.
실행중인 카운터 (1)가 두 개 함수를 두 번 생성하도록 카운터가 독립적이어야합니다. 다른 주.
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가 각각의 count 변수를 제공하여 요구 사항에 따라 "서로의 상태를 간섭하지 않도록"어떻게 제공하는지 알 수 없습니다.
올바른 경로에 있습니까? 모든 지침을 가장 높이 평가할 것입니다. 당신이를 정의 할 때 한 번 일어나는 수 변수 만 정의,
def counter : Int =>() => Int = {
// Complete definition below.
var count = 0
n: Int =>() => {
var returnVal = n + count
count = count + 1
returnVal
}
}
때문에 val
과 :
이것은 완벽하게 작동했습니다. 고맙습니다! – shoogazer
여기서는별로 중요하지 않지만'returnVal'을'val'로 만들 것입니다. –
좋은 전화 @ Jasper-M. – bergren2