当前位置: 首页 > 面试题库 >

如何在Scala中返回函数

慕容宏邈
2023-03-14
问题内容

我怎样才能返回一个 函数
副作用的词汇封闭 1 斯卡拉?

例如,我在Go中查看此代码示例:

...    
// fib returns a function that returns
// successive Fibonacci numbers.
func fib() func() int {
    a, b := 0, 1
    return func() int {
        a, b = b, a+b
        return b
    }
}
...
println(f(), f(), f(), f(), f())

打印1 2 3 5 8

而且我不知道如何在Scala中编写相同的内容。

1.在Apocalisp评论后更正


问题答案:

稍短一些,您不需要退货。

def fib() = {
    var a = 0
    var b = 1
    () => { 
        val t = a;
        a = b
        b = t + b
        b
    }
}


 类似资料:
  • 我现在正在学习Scala。我喜欢做的一件事是提前返回。我相信这对每个人来说都更容易理解,因为我们只是删除了之前的无效状态。现在,由于Scala是一种函数式语言,并且我读到了切割计算是糟糕的函数式风格,我想知道是否有一些技巧或函数式编程等同于早期返回。 这是我要写的代码,为了完全清楚,这只是一个愚蠢的例子,我不是在寻找我的特殊情况的特别黑客,但更多的是关于如何处理这些问题的一般建议。 现在,我想做的

  • 我有一个返回[异常,字符串]的方法 } 现在我为类B和I存根方法验证编写测试 是否可以以这种方式存根以返回函数的右(......)?

  • 我想用C++做一个简单的函数来练习一下。它应该做与python中的range()函数相同的事情,但现在要简单得多。我遇到了一个问题,数组没有正确地从函数返回到主函数。我曾经在下面编码,得到了一个奇怪的错误。有人知道问题出在哪里吗?

  • 我有一个函数,它调用一些服务并返回响应。如果响应为FALSE,它将等待1秒再次询问服务(然后可能返回TRUE)。 如何调用我的函数“checkService()”一次,并获得真正的值?(第一次或第二次尝试,由函数决定)我在函数内设置了RET值,但函数总是返回第一次RET,因为setTimeout是异步的。 换句话说,我需要一些“睡眠”技巧,或者任何解决方案(也可能是jQuery)。

  • 我的Go函数预计会返回一个值,但在调用库函数时可能会出现恐慌。我可以使用在延迟调用中捕获它,但是在这种情况下如何返回值呢?