【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

Java 决定使用 C#及 Scala 的 Lambda 语法

  • 2011-09-10
  • 本文字数:853 字

    阅读完需:约 3 分钟

Java 8 里最重要的更新之一便是引入了 Lambda 语法,这样可以将匿名函数作为参数或变量。然而,这方面的语法始终未能确定下来,也曾经有过投票,咨询社区更适应哪种语法。

最近,lambda-dev 在邮件列表宣布,Java 的Lambda 语法决定基于C#语法。这种语法在C#语言里已经使用很长时间了(C#在1.0 时期便引入了委托类型,并在2.0 里支持匿名函数,3.0 对Lambda 表达式提供支持)。

从调查结果来看,其他一些语法选择(例如 BGGA )相对别的设计并没有表现出明显的优势。而在 C#和 Scala 中已经长时间使用的语法体验,意味着会有大量程序员已经熟悉此类语法了(C#和 Scala 的主要区别,在于匿名函数的参数如何标识其类型:C#使用“int foo”,而 Scala 使用“foo: int”——人们很容易适应这种细微区别。Java 会使用 C#的形式“int foo”,因为这已经是 Java 语言的表示方法了)。

我们进行了很广泛的探索,但是最终发现没有哪种选择是明显的赢家(每种形式都有好的方面和不那么好的方面,也没有哪种形式明显好过其他的)。因此,与重新发明一种新的语法相比,我们认为还是选择一种在两种和 Java 比较相似的语言里——C#和 Scala——已经得到证明的语法比较合适。

这种语法同时支持表达式和代码块。表示式的形式不需要大括号,并且在执行后返回结果。语法块的形式需要使用大括号,除非使用了 return 关键字,否则不会直接返回结果。邮件里也给出了示例:

复制代码
x => x + 1
(x) => x + 1
(int x) => x + 1
(int x, int y) => x + y
(x, y) => x + y
(x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }
() => { System.out.println("I am a Runnable"); }

Lambda 表达式的关键优势,在于它们会对参数进行类型推断。不过在某些情况下,编译器依然无法推断出正确类型(尤其是出现操作符重载的时候,例如:(x, y) => x + y 在 Java 编译器不知道 x 和 y 是 int 还是 double 时候)。一般来说,类型推断引擎都能自动得出正确的代码,如果需要更多提示,程序员也始终可以显示地增加类型信息。

不久的将来会发布支持新语法的编译器以供体验。

2011-09-10 05:464396
用户头像

发布了 157 篇内容, 共 52.7 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

来了,好上岸的中小厂最新面经!

王中阳Go

golang 面试题 面经 大厂面经 最新后端面经

谷歌SEO优化教程:什么是内部链接?如何优化内部链接?

九凌网络

免备案高防服务器租用优势全解析:高效、便捷、安全

一只扑棱蛾子

高防服务器

比特币之路:技术突破、创新思维与领军人物

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Keka for Mac(mac压缩解压软件)v1.3.6中文版

影影绰绰一往直前

Keka for Mac Keka下载 Keka破解版 Keka Mac

开曼群岛:Web3企业的乐园

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 公链开发

BRC铭文NFT铸造质押挖矿系统开发运营

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

芯盾时代IDaaS:IAM能上云,身份安全更简单

芯盾时代

网络安全 身份安全 云服务 iam 统一身份认证

为什么中国软件逐渐国产化?

Geek_2305a8

谷歌SEO算法更新发展史:谷歌SEO优化排名背后的密码

九凌网络

地方发

群星

测试 单元测试

Vision pro、人形机器人、Hala Point

声网

从 Apache Doris 到 SelectDB Cloud:云原生架构下的弹性能力揭秘

SelectDB

数据库 云计算 数据分析 云原生 弹性计算

Disk Drill for Mac(苹果系列机数据恢复软件)v5.4.1425中文激活版

影影绰绰一往直前

Disk Drill下载 Disk Drill mac Disk Drill 破解版

阿里巴巴1688.item_get API接口助力精准获取商品ID

技术冰糖葫芦

api 货币化 API 接口 API 文档 pinduoduo API

企业海外网络解决方案分析与比较

Ogcloud

SD-WAN 组网 企业组网 SD-WAN组网 SD-WAN服务商

苹果Mac电脑窗口辅助管理工具:Magnet for Mac 支持M1

影影绰绰一往直前

Magnet for mac Magnet中文版 Magnet Mac下载

国内做TikTok直播,海外直播专线搭建是关键

Ogcloud

海外直播 tiktok直播 tiktok直播专线 海外直播网络 tiktok直播网络

Apache IoTDB v1.3.1 发布|增加多种脚本工具、内置函数等功能

Apache IoTDB

Web3 游戏周报(4.14-4.20)

Footprint Analytics

gamefi

软件测试学习笔记丨Selenium的PageObject设计模式

测试人

软件测试 自动化测试 测试开发

当AI文曲星,照耀学海

脑极体

AI

数新大数据平台迁移解决方案

数新网络官方账号

大数据 数据迁移

基于研发过程改进的质量度量模型

鲸品堂

数据分析 质量

企业理想中的IAM应该具备这四点:多、快、好、省

芯盾时代

企业 iam 统一身份认证 Idaas

全量与增量的配置模式

RestCloud

数据同步 ETL 全量 增量

探索比特币符文热:市场趋势与持续性分析

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

iStat Menus for mac(mac系统状态监控工具)v6.73 (1230)中文版

影影绰绰一往直前

iStat Menus破解版 iStat Menus注册码 iStat Menus下载

公链系统开发全指南: 从规划到实施

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

第48期|GPTSecurity周报

云起无垠

24年风口轻资产创业项目,互联网全媒体广告代理前景及利润

互联网广告小哥

创业 创业项目 创业项目风口

Java决定使用C#及Scala的Lambda语法_Java_Alex Blewitt_InfoQ精选文章