【问题标题】:Is it possible to declare return type for closure?是否可以声明关闭的返回类型?
【发布时间】:2020-11-18 19:22:27
【问题描述】:

我正在学习 Scala 编程语言的闭包。

例如:

val a = (x:Int, y:Int) => x + y;
a(1, 2)

会给我3。闭包a 像函数(Int, Int):Int 一样工作。

是否可以像这样声明闭包的返回类型?

val a = (x:Int, y:Int):Int => x + y;
a(1, 2)

有可能吗?

【问题讨论】:

    标签: scala closures


    【解决方案1】:

    这种语法是不可能的(val a = (x:Int, y:Int):Int => x + y),但是你可以为a声明类型:

    val a: (Int, Int) => Int = (x, y) => x + y

    【讨论】:

    • 还有一个问题,我可以在一个带有分号的块中编写语句,如下所示:val g:(Int,Int)=>Int = (a:Int, b:Int) => { return a + b; }
    • 这是一个合法的表达,但只有没有return关键字
    • 这种语法是不可能的... 实际上可以写val a = (x: Int, y: Int) => (x + y): Int 类型归属。
    猜你喜欢
    • 2020-03-05
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多