在 Scala 中仅使用递归的单行循环

Ru *_*sha 0 scala

我不知道在哪里问这个......(它不太适合代码高尔夫 stackoverflow 社区)

我有这个概念验证 javascript 片段,它通过使用递归在没有 for/while 循环的情况下循环:

(x=>x(x))(x=>{console.log('...'); x(x);})
Run Code Online (Sandbox Code Playgroud)

是否有等效的单行Scala 片段可以做同样的事情?(再次,使用递归来实现循环)?

Lui*_*rez 5

好吧,你可以这样做:

def loop(): Unit = { println("loop"); loop() }
Run Code Online (Sandbox Code Playgroud)

或这个:

def loop[A](f: (A => A) = (loop[A] _)): A = { println("loop"); loop(f) }
Run Code Online (Sandbox Code Playgroud)

但我看不出它的价值是什么,它只是一个愚蠢的无限函数。

  • 我可以重新表达你的哀叹:“我再次不明白<插入你可以在代码高尔夫上找到的任何东西>有什么价值”。 (2认同)