hax / hax/hax.github.com

关于exclusive range运算的符号

Open
#25 8 comments 0 reactions 0 assignees View on GitHub
笔记
Dominant language
HTML
Stars
464
Forks
27
PR merge metrics
No merged PRs in 30d

Description

大概去年这个时候 Swift 语言把 [half-open range operator](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html#//apple_ref/doc/uid/TP40014097-CH6-ID75) [从 `..` 改为了 `..<`](https://twitter.com/jakewharton/status/489154967500881920),引起了一些讨论。

实际上`..<`运算符的最早先例是 [Groovy 语言](http://www.groovy-lang.org/operators.html#_range_operator)。

而Groovy在初创之时,使用的是和 Ruby 一样的 range operator(`..` 和 `...`),在2005年4月左右将 `...` 改为了 `..<`。

而最早提出以 `..<` 符号作为 exclusive range 运算符的,其实正是本人。这10年前的邮件记录可在此查看:http://marc.info/?l=groovy-dev&m=113684773506831

其实在 Swift 做了这个改进后,还是有很多人吐槽这个符号的,比如 `1..<3` 有点像“I love”?

不过我个人认为,如果一定要使用多个点来作为 range operator,那么 Swift 的这组符号选择是看下来最合理的——实际上我开发的 Jedi 在三年前[就使用了 `...` 作为 inclusive range op,`..<` 作为 exclusive range op](https://github.com/baixing/jedi/blob/7b7bb824bc4f60b8ae4cc22360941c7327607a5c/src/expression.ometajs#L103),应该是世界上最早使用这个组合的了——幸好有git记录,后来人就不会以为我是抄 Swift 的了——实际上是 Swift 的开发者在10年后终于选择了我当初的设计……

不管这个符号的好坏如何,这应该是迄今为止我个人对整个编程界最大的影响了,而且随着Swift的流行,还会有更多的开发者使用我创造的这个符号,想想好像也挺有成就感的。

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.