1
chonerlee 2014-07-09 16:14:48 +08:00
包含不包含,傻傻分不清楚
|
2
yujnln 2014-07-09 16:19:29 +08:00
beta 3 给改成 ..< 了
|
3
yangg 2014-07-09 18:24:31 +08:00
知乎里面看过一篇文章,找不到地址了,
一般用 start <= x < end,有几个好处 1. end - start 的值和结果出来的数字相等 2. 取自然数时,不需要使用非自然数的 start |
4
thinker3 2014-07-10 01:50:32 +08:00
我觉得, ruby的选择不正常
|
5
abscon 2014-07-10 05:22:15 +08:00 via Android
丙增增的标准模版库里,只用前闭后开式,相当完美。
前闭后闭式讨好的人群和习惯用1做数组首元素的人群应该是同一类人群 |
7
abscon 2014-07-10 09:39:57 +08:00
@dorentus 恩,那就说点有关系的。我认为ruby的选择不好。输入双点号明显比三点号要省力,理应用在更常见的场合。而“前闭后开”区间理应更常见。但是这只是一个规定而已,遵从了不合理的规定也不会怀孕,是吧?
我相信c/c++程序员更偏爱for( i=0; i<n; ++i )胜过for( i=0; i<=n-1; ++i ),至于swift和ruby的习俗就不清楚了 |
8
dorentus 2014-07-10 10:07:29 +08:00
@abscon
楼主说的是,Swift 和 Ruby 里面,都自带支持一个数据结构叫 Range,表示一个区间。 然后这两个语言里面用字面量表示 Range 时,.. 和 ... 的意义刚好相反。仅此而已。 Ruby 的不知道,Swift 的 Range 又不仅限于整数,用处也不限于作查找时的位置,[1.0, 3.0] 和 [1.0, 4.0) 明显是两个不同的区间,两种方式表现方式肯定都是需要的。 Ruby 和 Swift 一样,Range 最常用的两个地方,一是在 case 语句里,二是用作下标(只有这种是和你说的那个应用场景一致,而这时你完全可以只用前闭后开的 range literal)。 但 .. 和 ... 或者 ..> 一个字符的差别而已,谈不上省力不省力吧。没准 Ruby 设计的时候是觉得三点比较好看才选择它作为前闭后开区间的字面量形式的。。。 |
9
abscon 2014-07-10 10:50:38 +08:00 1
@dorentus 我看重的“前闭后开”的意义不在于“数值区间”,而在于在算法里如何看待一个序列。“前闭后开”认为每一个序列都会遇到一个超过尾部的“非法元素”,这种表示法我觉得比“前闭后闭”更优雅
|
10
dopcn OP ..>最丑应该没有异议吧
|
11
dorentus 2014-07-10 14:33:42 +08:00
其实如果它的 array literal 不是用 [ ... ] 而是和 C 一样用 { ... } 的话,应该就可以直接用数学里的 [a, b] 和 [a, b) 形式来表示区间了吧……
|