Scala - whileLoop

WA
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 5 lat
  • Postów:56
0

Mam taki przykład pętli while:

Kopiuj
var count = 0
while (count < 5) {
println(count)
count += 1
}

Mam stworzyć funkcję whileLoop(bez używania efektów obliczeniowych), która pobiera dwa argumenty: warunek oraz wyrażenie i dokładnie symuluje działanie pętli while (również składniowo).
Jakiego typu (i dlaczego) muszą być argumenty i wynik funkcji?

Może mnie ktoś nakierować, jak takie coś zrealizować? Podejrzewam, że chodzić może o ewaluację leniwą, ale kompletnie nie wiem, jak mam przekazać np. w wyrażeniu "count+=1", po czym wywołać to i sprawdzać w warunku w funkcji.

Marcin Szleper
  • Rejestracja:około 6 lat
  • Ostatnio:11 miesięcy
  • Lokalizacja:Katowice
  • Postów:2
1

Możesz zrobić to rekurencyjnie, wywołując funkcję z argumentami: counter: Int, predicate: Int => Boolean i zwracać w tym przypadku Unit. Przy kolejnych wywolaniach sprawdzasz predicate i wywolujesz jeszcze raz z counter+1 lub kończysz działanie. Można wykorzystać rekurencje ogonowa (@tailrec), aby zapewnić stack safety - kompilator zmieni to w zwykłą pętle i nie będą tworzone kolejne ramki stosu

Burdzi0
  • Rejestracja:prawie 9 lat
  • Ostatnio:9 dni
  • Lokalizacja:Futurama
  • Postów:887
0

Czyżby Paradygmaty Programowania profesora Spławskiego? ;)


Bite my shiny metal ass!
Life throws you an error code like that, you don't have the luxury of a ZnVja2luZw== pop-up explanation *Robię projekty studenckie, pisz priv ;) *

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.