NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:464394
用户头像

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

关注

评论

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

如何使用 NFTScan NFT API 在 Avalanche 网络上开发 Web3 应用

NFT Research

NFT\ NFTScan nft工具

AnyGo for Mac破解版下载 虚拟机定位软件

影影绰绰一往直前

项目流程管理软件OmniPlan Pro 4 for Mac 中文激活版下载

iMac小白

功能强大的虚拟定位软件:AnyGo for Mac破解版下载

iMac小白

Golang流水线设计模式实践

俞凡

golang 设计模式

Copilot Studio使用初体验

Bruce Talk

AI Copilot

Mac平台上的系统监控工具iStat Menus激活版下载 支持M

iMac小白

Golang数据结构性能优化实践

俞凡

golang

mac专用图片管理工具:PowerPhotos for Mac直装版下载

iMac小白

mac最强深度清理软件:App Cleaner & Uninstaller for Mac v8.2.4中文激活版

iMac小白

PasteNow for mac(剪贴板管理工具)v2.15.3中文激活版

影影绰绰一往直前

SILKYPIX Developer Studio for Mac激活版下载

影影绰绰一往直前

基于Go-Kit的Golang整洁架构实践

俞凡

golang 架构 设计模式

HyperDock for Mac(mac窗口调整工具)v1.8.0.10中文激活版

影影绰绰一往直前

【Go实现】实践GoF的23种设计模式:备忘录模式

元闰子

Go 设计模式 备忘录模式

mac电脑系统优化清理软件Sensei for Mac中文激活版下载

影影绰绰一往直前

Sensei mac Sensei下载 Sensei破解版 Sensei中文版 Sensei激活版

JixiPix Pastello Pro for Mac(图片处理工具) v6.0.98中文激活版

mac

苹果mac Windows软件 JixiPix Pastello 数字绘画软件

BetterDisplay Pro for Mac(显示器校准软件) v2.0.11永久激活版

mac

显示器校准软件 苹果mac Windows软件 BetterDisplay Pro

Django进行docker服务器部署。

百度搜索:蓝易云

Python django Linux 运维 Web

Docker安装Nginx,并实现负载均衡教程。

百度搜索:蓝易云

nginx Docker Linux 运维 云服务器

多点触控手势的软件Multitouch for Mac免激活版下载

影影绰绰一往直前

Rectangle Pro for Mac激活版下载

影影绰绰一往直前

Macos 图像批量处理工具:Retrobatch Pro for Mac激活版下载

iMac小白

Rectangle Pro for Mac激活版下载

iMac小白

lightroom classic 2024 for mac破解版下载

iMac小白

mac电脑财务管理软件Moneydance for Mac注册激活版下载

影影绰绰一往直前

Macos专业的图像处理工具:CameraBag Pro 2024激活版下载

iMac小白

Topaz Video AI Mac秘钥激活版下载 支持M

iMac小白

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