swift学习笔记 - Range、ClosedRange、CountableClosedRange与CountableRange学习

原创 2017年01月05日 22:21:12

移动端访问不佳,请访问我的个人博客

在使用swift的过程中字符串操作的时候会用到Range,刚开始使用起来各种别扭,然后发现居然还有ClosedRange、CountableClosedRange和CountableRange,这下就彻底头疼了,下面简单的描述一下它们的区别

从命名来代码来理解和区分

  • CountableClosedRange:可数的闭区间
  • CountableRange:可数的开区间
  • ClosedRange:不可数的闭区间
  • Range:不可数的开居间

下面通过代码来理解一下:

// 初始化测试:
// CountableClosedRange: [0,2]
let rangea = 0...2
// CountableRange: [0,2)
let rangeb = 0..<2
// ClosedRange: [0.1,2.1]
let rangec = 0.1...2.1
// Range: [0.1,2.1)
let ranged = 0.1..<2.1

// for循环测试:可数的,可以for循环
// CountableClosedRange:可数的可以for循环,输出012
for i in rangea {
    print(i)
}
// CountableRange:可数的可以for循环,输出01
for i in rangeb {
    print(i)
}

// for循环测试:不可数的,不能for循环
// ClosedRange:不可数,不能for循环,以下写法会报错
for i in rangec {
    print(i)
}
// Range:不可数,不能for循环,以下写法会报错
for i in ranged {
    print(i)
}

总结

可以用可数和不可数、闭区间和开区间来理解记忆Range、ClosedRange、CountableClosedRange和CountableRange

可数:可以用于for循环

  • CountableClosedRange
  • CountableRange

不可数:不能用于for循环

  • ClosedRange
  • Range

闭区间:

  • CountableClosedRange
  • ClosedRange

开区间:

  • Range
  • CountableRange

以上是我总结的Range、ClosedRange、CountableClosedRange和CountableRange的区别,希望对大家有帮助,如果写的有错误希望大家能指出,谢谢大家的阅读

版权声明:本文为博主原创文章,未经博主允许不得转载。

LongStream 中的 range 和rangeClosed方法的区别

功能 range,需要传入开始节点和结束节点两个参数,返回的是一个有序的LongStream。包含开始节点和结束节点两个参数之间所有的参数,间隔为1. rangeClosed的功能和range类似。...
  • ZXIAORONG
  • ZXIAORONG
  • 2016年12月13日 15:26
  • 1221

流API--原始类型流

到目前为止,我们已经将整型收集到了一个Stream的流中,不过将每个整数包装成相应对象显然是一个低效的做法,对于其他的基本类型也是一样,我们前面说过jdk提供包装类已经自动装箱和拆箱只是为了面向对象编...
  • u011794238
  • u011794238
  • 2015年11月09日 16:46
  • 693

Guava中Range和Cut简介

Guava中Range和Cut简介
  • xiangyubobo
  • xiangyubobo
  • 2015年07月27日 17:21
  • 1061

guava中Range的使用方法(com.google.common.collect.Range)

1.构造Range实例必须使用Range中的静态方法,因为Range的构造方法被设置为private,当a > b使,或者当a == b且为(a,b)时会抛出IllegalArgumentExcept...
  • shiqining888
  • shiqining888
  • 2015年03月22日 17:05
  • 1571

《从零开始学Swift》学习笔记(Day 40)——析构函数

原创文章,欢迎转载。转载请注明:关东升的博客 与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程。在析构过程中也会调用一种特殊的方法deinit,称为析构函数。析构函数dein...
  • tonny_guan
  • tonny_guan
  • 2015年11月25日 10:28
  • 1971

swift 学习资源 大集合

今天看到了一个swift的学习网站,里面收集了很多学习资源 Swift 介绍 Swift 介绍   来自 Apple 官方 Swift 简介 (@peng_gong) ...
  • sqc3375177
  • sqc3375177
  • 2014年06月07日 17:07
  • 16722

Swift学习笔记(十八)——字符串String.Index和Range详解

在Swift字符串的检索中,有时候返回的可能是一个范围,而不是一个具体的位置。这就要用到Swift中Range的概念。我们对此来进行详解。 (1)字符串中检索某个单词方法:rangeOfString ...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2015年07月27日 17:32
  • 8694

ios -- 教你如何轻松学习Swift语法

目前随着公司开发模式的变更,swift也显得越发重要,相对来说,swift语言更加简洁,严谨.但对于我来说,感觉swift细节的处理很繁琐,可能是还没适应的缘故吧.基本每写一句代码,都要对变量的数据类...
  • binyao02123202
  • binyao02123202
  • 2016年08月21日 17:44
  • 2353

Swift的学习总结

Swift学习总结
  • watertekhqx
  • watertekhqx
  • 2017年02月09日 17:35
  • 219

Swift入门教程3-字符串String

原创blog,转载请注明出处 String 在swfit中,String兼容Unicode的方式。使用方法和C语言类似。 注意   在Cocoa和Cocoa touch中,Swift的String,和...
  • Hello_Hwc
  • Hello_Hwc
  • 2014年10月07日 12:09
  • 8819
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:swift学习笔记 - Range、ClosedRange、CountableClosedRange与CountableRange学习
举报原因:
原因补充:

(最多只允许输入30个字)