栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么必须在lambda主体中使用全代码块将throw语句括起来?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么必须在lambda主体中使用全代码块将throw语句括起来?

throw
语句,那么,一个声明,而不是表达式所以它必须被置于括号内。根据本文的内容,Java专家组当时对lambda的语法进行了非正式调查,其中有四个选择:

  • 稻草人
    #(arglist)(expr) and #(arglist){statements}
  • BGGA :(
    { args -> statements }
    类似于Scala和Groovy)
  • SotL
    #{ args -> statements}
  • 雷德蒙德
    (args) -> { statements }

最终,选择是根据该线程采用类似于C#的语法,据我所知,它看起来与上述最后一个选项最接近。在C#中,
表达式lambdas语句lambdas 之间是有区别的:

表达式lambda(C#):

(input parameters) => expression

语句lambda(C#):

(input parameters) => {statement;}

该语法在MSDN文档页面中进行了说明。

在上一个线程中提到了选择此语法而不是其他选项的原理:

选择此语法的决定是双重的:

  • 在大多数主观指标上,语法的得分为“很好”(尽管在某些情况下,它看起来很糟糕,就像其他所有方法一样)。特别是,它对于用作方法参数的“小”
    lambda效果很好(一种常见情况),对于大(多语句)lambda效果也很好。

*尽管进行了广泛的搜索,但在替代方案中并没有明确的赢家(每种形式都有一些好的方面,而某些方面却不是很好,并且没有任何一种形式明显优于其他形式)。因此,我们觉得最好选择一种已经证明可以在两种最相似的Java(C#和Scala)语言中很好地工作的东西,而不是发明一些新东西。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/610066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号