浅析Strideable协议

作者: ycs_man | 来源:发表于2016-04-28 09:39 被阅读195次

凡是遵守了Strideable协议的类型,理论上都是连续的,在单一维度上的值能够被抵消和测量,支持整型,浮点型和索引值,Strideable协议继承于 Comparable。

假如我们想实现穿越到指定的时间,例如1个小时之后。

//伪代码

var date = NSDate()

date = date + 3600    //3600秒 = 1小时

date += 3600

我们现在给NSDate类扩展方法,并遵守Strideable协议,advancedBy()和distanceTo()这俩个方法是必须实现,否则会报错,告诉你没按套路来。Strideable协议的关联对象是Stride,遵守SignedNumberType协议。

extension  NSDate: Strideable{

      public func advancedBy(n: NSTimeInterval) ->Self {

             return dateByAddingTimeInterval(n)

      }

      publicfunc distanceTo(other:NSDate) ->NSTimeInterval {

             return other.timeIntervalSinceDate(self)

      }

}

var time =NSDate()

time = time + 60.00

time += 60

这样我们就可实现通过加法(+)运算符任意地增加时间了,或减法(-)运算符减去时间。

我们也可以调用advancedBy()函数实现增减效果。

time.advancedBy(3600)  //增加1小时

time.advancedBy(-3600)  //减少1小时

我们还可以用distanceTo()测量距离或是间隔,比如说:求

var anHourLaterTime =time +3600

var distance = time.distanceTo(anHourLaterTime)    //anHourLaterTime - time

print(distance)          //距离为3600

遵守了Strideable协议的类型,默认会实现func stride(through:by:)和func stride(to:by:)俩个函数

func stride(through end:NSDate, by stride:NSTimeInterval) ->NSDate {

      returndateByAddingTimeInterval(stride)

}

func stride(to end:NSDate, by stride:NSTimeInterval) ->NSDate {

      returndateByAddingTimeInterval(stride)

}

也可以调用这俩个方法实现增减时间效果

time.stride(through:NSDate(), by: 3600)

time.stride(to:NSDate(), by: 3600)

相关文章

  • 浅析Strideable协议

    凡是遵守了Strideable协议的类型,理论上都是连续的,在单一维度上的值能够被抵消和测量,支持整型,浮点型和索...

  • Objective-C中for循环到Swift的渐变

    Objective-C Swift stride 是 Strideable 协议中定义的一个方法, 它可以按照指定...

  • iOS网络协议----HTTP/TCP/IP浅析

    iOS网络协议----HTTP/TCP/IP浅析

  • 我整理的网上讲解详细的文章

    讲算法的 RSA算法原理(一) RSA算法原理(二) 网络协议 iOS网络协议----HTTP/TCP/IP浅析 ...

  • QUIC协议浅析与HTTP/3.0

    QUIC协议浅析与HTTP/3.0 1. 简介 QUIC(Quick UDP Internet Connectio...

  • IOS 网络协议浅析

    转载:iOS网络协议----HTTP/TCP/IP浅析 一、TCP/IP协议 话说两台电脑要通讯就必须遵守共同的规...

  • iOS-10 网络协议

    转载:iOS网络协议----HTTP/TCP/IP浅析 一、TCP/IP协议 话说两台电脑要通讯就必须遵守共同的规...

  • 浅析http协议

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用...

  • 浅析ssh协议

    SSH原理与应用 ssh在程序员的生活中还是非常常见的,ssh具有很多种功能,也可以用在很多种场合。 什么是SSH...

  • zookeeper协议浅析

    是一个高可靠、高可用、高性能的分布式一致系统,核心为ZAB协议。 zookeeper一致性协议 zookeeper...

网友评论

    本文标题:浅析Strideable协议

    本文链接:https://www.haomeiwen.com/subject/zhxhrttx.html