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的区别,希望对大家有帮助,如果写的有错误希望大家能指出,谢谢大家的阅读

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang631106979/article/details/54098910

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:54
  • 1791

swift Range使用方法

转载于:http://my.oschina.net/notting/blog/357410 原文:http://natashatherobot.com/swift-string-substringi...
  • jackingtop
  • jackingtop
  • 2015-04-28 14:43:18
  • 1528

Swift中的Range<Int>类型

import Foundation var range: Range = Range(start: 0, end: 5) var range1 = 0...5 var range2 = 0..
  • u010998924
  • u010998924
  • 2015-12-09 13:27:49
  • 266

LongStream 中的 range 和rangeClosed方法的区别

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

流API--原始类型流

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

swift 字符串的截取 以及 Range 的用法

func someMethodOfRange() {                  /**          *  字符串与Range的用法          */  ...
  • jq2530469200
  • jq2530469200
  • 2016-06-16 15:30:40
  • 5823

Swift - 实现NSRange与Range的相互转换

相较于 OC 的 NSRange,Swift 的 Range 更加复杂,用法也有很大的区别。虽然通常来说我们在 Swift 中使用 Range 就可以了,但有些情况下还是要使用 NSRange,比如创...
  • allanGold
  • allanGold
  • 2018-01-23 17:54:26
  • 171

Swift3.0 的一些差异整理

更新到Swift3.0后有些差异是需要我们重新了解的。Swift 3改变可以分为两个大的部分 移除在Swift 2.2中弃用的方法 语言更加安全,优雅 1、Range Range在Swift3.0的...
  • zww1984774346
  • zww1984774346
  • 2017-02-28 10:57:15
  • 371

Swift3:NSMutableAttributeString的Range和NSRange问题

本文下方封装了简单的属性字符串方法。封装中只实现了最基础的功能,用来设置一个string中的某些subString特殊显示。调用方法为链式调用。—> 下面来说说使用NSMutableAttribute...
  • qq_29909323
  • qq_29909323
  • 2017-08-04 14:18:22
  • 403

Swift3-字符串String.Index和Range详解

String.Index:表示在字符的CharacterView实例中的位置,进入头文件就可以看到,其实是public typealias Index = String.CharacterView.I...
  • longshihua
  • longshihua
  • 2016-12-26 10:21:03
  • 9100
收藏助手
不良信息举报
您举报文章:swift学习笔记 - Range、ClosedRange、CountableClosedRange与CountableRange学习
举报原因:
原因补充:

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