O.O*_*.O. -1 language-design rust
什么是用于选择运营商的理由!
/ &&
/ ||
在not
/ and
/ or
?背后有一些历史,还是只是偏好?
我有一些想法:
Rust遵循C/C++.但是,在for-each循环的情况下,使用的是更像英语的版本for x in X
而不是C++ for (x: X)
,所以Rust不仅盲目地遵循C/C++的所有内容.
符号更短.两者之间的字符数似乎相似.
由于与类型规范的冲突,语法必须不同.也有区别a as u8
而不是(u8)a
.
由于Rust是一种新语言,我认为他们可以选择符号或单词而不会出问题.Rust选择符号而非文字的原因是什么?为什么不同时选择?
早在2006年,Graydon Hoare开始研究Rust作为一个小项目.Hoare还参与了Servo浏览器引擎.他对Rust的目标是它可能有助于开发所述的浏览器引擎.由于引擎(几乎所有其他浏览器引擎)都是用C++编写的,因此Rust基本上是Hoare的C++替代品.
所以使用与C++相同的逻辑运算符似乎很自然.
GitHub存储库是在2010年创建的,&&
并且||
已经使用了Rust语言.见该lazy-and-or.rs
期间资源库中的第二次提交的测试:
if (true && x) { ... }
Run Code Online (Sandbox Code Playgroud)
随着时间的推移,语言设计过程变得更加民主,并且出现了更多的想法.但直到2016年才有人正式提议添加not
,and
并or
作为RFC.
但正如您所看到的那样,RFC已经关闭.没有船的贡献者解释如下:
如果我从一开始就设计一种语言,我可能更喜欢
and
和or
.但是我们通常反对上下文关键词,除非绝对必要,表达语境中的上下文关键词特别难以引入,并且我们倾向于避免"选择你的毒药"变种的句法糖.
重要的是,在这一点上!
,&&
和||
已经被稳定了一年多的时间.所以唯一的选择是添加替代运算符,但不能替换那些运算符.这似乎不值得.
免责声明:我在2014年才加入了Rust社区.在IRC或其他我无法搜索的媒体中,可能会有更多关于此问题的讨论.但这就是我能找到的全部.
归档时间: |
|
查看次数: |
176 次 |
最近记录: |