Scala中有無限循環的更多功能替代嗎?Scala替代無限循環
while(true) {
if (condition) {
// Do something
} else {
Thread.sleep(interval);
}
}
Scala中有無限循環的更多功能替代嗎?Scala替代無限循環
while(true) {
if (condition) {
// Do something
} else {
Thread.sleep(interval);
}
}
一件事,你所能做的就是用高階功能,如Stream.continually
和配對起來與for
理解:
import scala.util.Random
import scala.collection.immutable.Stream.continually
def rollTheDice: Int = Random.nextInt(6) + 1
for (n <- continually(rollTheDice)) {
println(s"the dice rolled $n")
}
這個例子本身並不是純粹的功能,因爲這種非引用透明的方法,但它是一個可能的構造,可以幫助你考慮功能組合,而不是使用副作用。
你可以做到這一點遞歸
@tailrec
def loop(): Nothing = {
if (condition) {
// Do something
} else {
Thread.sleep(interval);
}
loop()
}
我想無限尾遞歸:
@tailrec
def loop(): Nothing = {
if (condition) {
// Do something
} else {
Thread.sleep(interval);
}
loop()
}
我認爲['Nothing'](http://scala-lang.org/api/current/scala/Nothing.html)是更合適的類型。 ['Unit'](http://scala-lang.org/api/current/scala/Unit.html)是不返回任何值的東西的類型。沒有東西是不會返回的東西的類型。 –
我認爲['Nothing'](http://scala-lang.org/api/current/scala/Nothing.html)是更合適的類型。 ['Unit'](http://scala-lang.org/api/current/scala/Unit.html)是不返回任何值的東西的類型。沒有東西是不會返回的東西的類型。 –
@JörgWMittag爲什麼沒有「永不退貨」?我的理解是它只是一個底部類型 –
底部類型*是一個沒有價值的類型。 (與具有單個唯一值的單位類型相反)。 –