写点什么

C# 7 去掉了高级模式匹配特性

  • 2016 年 5 月 30 日
  • 本文字数:942 字

    阅读完需:约 3 分钟

最初有望在 C# 7 中出现的高级模式匹配特性已于近日从future分支中排除出去,放入了该语言的下一个版本中。

Roslyn 的 GitHub 库已经明确了 C# 7 模式匹配的变化范围。尤其是问题#10866 (“将 features/patterns分支分成两个包含 / 不包含在 C# 7 中的子特性分支”)和 PR #10888 (“去掉高级模式匹配特性的证据”)详尽地描述了这一变化的内容。

正如 InfoQ 几周之前的报道,模式匹配会成为 C# 7 中最吸引人的新特性,对有 F#或 Haskell 背景的程序员而言尤其如此。具体地,新模式匹配特性预计提供如下功能:

  • 增强case块,允许基于类型或变量范围切换代码执行路径,例如case int x:case int x when x > 0
  • 支持“分解(destructuring)”,当满足指定条件时,允许开发人员将一个对象分拆成它自身的部分组件,并创建局部变量引用那些组件。语法if(person is Professor {Subject is var s, FirstName is "Scott"})提供了这方面的一个例子。

那么,按照 Roslyn 问题#10866 的描述,用于一些基本模式形式的语法“表达式 is 类型标识符”和“case 模式 when 表达式”已经移到了future分支,它们会包含在 C# 7 中。相反地,其他特性会留在patterns/features分支中,这个分支里的特性“可能在以后的版本中提供”。

就是说,那些更高级的模式匹配特性将不会出现在 C# 7 中。Reddit 用户 wreckedadvent 发了一个帖子,有效地解释了那些特性:

  • 递归模式形式,比如位置模式(比如p is Person("Mickey",*))、属性模式(比如p is Person {FirstName is "Mickey"})、元组模式、通配符*,等等;
  • let关键字定义不可变变量(比如let x = e2 when e2 else stmt;),而不是可变var
  • match允许开发人员编写下面这样的代码:
复制代码
var result = ...
let message = result match (
case Success<string> success: success.Result
case Failure err: err.Message
case *: "Unknown!"
);
  • 基于用户定义代码的模式匹配,比如一个用户定义的is操作符。

这在 C#开发者社区里引发了一些反响。一方面,那些更热衷于函数式编程的开发者表示,缺少一个让C#更加函数化的特性相对而言是一种欺骗。另一方面,其他开发人员表示,他们不关心或者很高兴C#的演化受到了严格的控制。

查看英文原文 Advanced Pattern Matching Features Removed From C# 7

2016 年 5 月 30 日 19:002250
用户头像

发布了 1008 篇内容, 共 342.5 次阅读, 收获喜欢 328 次。

关注

评论

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

食堂就餐卡系统设计

TiK

架构师训练营 - 第一周 - 食堂就餐卡系统设计

韩挺

PostgreSQL权限控制

唯爱

如何使用UML做需求分析与系统架构

JefferLiu

UML 架构文档

Hyperledger Fabric基础知识

程序那些事

区块链 以太坊 超级账本 hyperledger fabric

【架构师训练营】第 1 周作业1—食堂就餐卡系统设计

花生无翼

极客大学架构师训练营

架构师训练营第一周学习总结

永远不要低估一颗冠军的心

S型曲线 - 第二曲线

石云升

创新 增长 S型理论 第二曲线 破坏式创新

架构师训练营第一周总结

极客大学架构师训练营

读笔 | 听说你也想辞职去摆摊?何不先收下这份秘籍

张鸱鸺

读书笔记 摆地摊 社会话题

【架构师训练营】第1周作业2—学习总结

花生无翼

食堂就餐卡系统架构设计文档

竹森先生

极客大学 架构设计 极客大学架构师训练营

架构师训练营第一周总结

Linuxer

极客大学架构师训练营

就餐卡系统设计

永远不要低估一颗冠军的心

极客大学架构师训练营

作业一:食堂就餐卡系统设计

LN

开启“观察者模式”,跳出灵魂看自己

小天同学

日常思考 个人感悟

极客时间 - 架构师训练营 - week1 - 课堂笔记

毛聪

极客大学架构师训练营

怎样才能像月「睡后收入」 20 万的独立开发者一样挣钱?

非著名程序员

程序员 独立开发者 程序人生 提升认知

深圳各大知名办公园区引进 GoWork 智能楼宇管理系统,开启商业地产行业的春天

Geek_116789

ARTS-第一周

爱睡的猫

架构师0期作业-20200606

caibird1984

极客大学架构师训练营

食堂就餐卡系统设计

戴维斯

标题

lai

架构师训练营 - 第一周 - 学习总结

韩挺

第一周练习1 食堂就餐卡系统设计

王鑫龙

极客大学架构师训练营

推荐几款基于 Markdown 语法在线制作简历的平台

JackTian

GitHub 网站 markdown 简历 工具软件

分布式账本简介

程序那些事

区块链 分布式系统 区块链技术 hyperledger fabric

架构师训练营第一周命题作业

兔狲

数据结构与算法之数组链表

shirley

数组 链表

作业二:根据当周学习情况,完成一篇学习总结

LN

Fabric的6大特性

程序那些事

区块链 blockchain 区块链技术 hyperledger fabric

C# 7去掉了高级模式匹配特性_.NET_Sergio De Simone_InfoQ精选文章