当前位置: 首页 > 面试题库 >

快速范围内的“间隔”是什么?

闻人昊昊
2023-03-14
问题内容

我知道范围有3种类型:范围,步幅和间隔。

var closed:ClosedInterval = 1.2...5.0

var half_open:HalfOpenInterval = 1.2..<5.0

快速间隔是多少?以及它们使用的一个例子是什么?

http://zh.wikipedia.org/wiki/间隔(数学)

编辑:这就是beta 5 xcode 6发行说明所说的:

•可比较值的间隔,可以有效地检查是否包含。间隔用于switch语句中的模式匹配,并由〜=运算符使用。


问题答案:

从Swift 3(使用Xcode
8)开始,Interval类型不再存在。现在,Range<T>类型族包括以前的范围和间隔类型的功能,并且还符合用于收集类型和索引的新模型。

在Swift 2.x和更早的版本中…范围用于迭代,间隔用于模式匹配。

func testNum(num: Int) {
    let interval: HalfOpenInterval = 0..<10
    let range = 10..<20
    switch num {
    case interval:    // this works
        break
    case range:       // error "does not conform to protocol IntervalType"
        break
    default:
        break
    }
}

Range类型进行了优化,以生成在整个范围内递增的值,并且可以使用可以计数和递增的类型。

一种Interval类型是用于测试是否区间内的给定值位于最优化。它适用于不一定需要递增概念的类型,并提供诸如将一个范围限制到另一个范围(例如(0..<10).clamp(5..<15)yield
5..<10)之类的操作,这些操作对于复杂的模式匹配很有用。

因为..<...运算符分别具有两种形式-一种返回a
Range,另一种返回Interval--type推断会根据上下文自动使用正确的一种。因此,如果您编写语句0..<10case标签switch,Swift会自动构造一个,HalfOpenInterval因为switch语句需要一种Interval类型。

~=运营商是一个办法做到在一个区间一个测试没有一个switch说法。写作interval ~= value等同于interval.contains(value)

值得注意的是,您可以通过查看标准库接口及其注释来发现许多这些问题:像HalfOpenInterval在操场上一样写一个类型名称,然后单击命令以跳至其定义



 类似资料:
  • 问题内容: 嗨,我正在尝试检查当前时间是否在某个时间范围内,例如8:00-16:30。下面的代码显示可以将当前时间作为字符串获取,但是不确定如何使用此值来检查它是否在上面指定的时间范围内。任何帮助将不胜感激! 问题答案: 有很多方法可以做到这一点。就我个人而言,如果可以避免的话,我不喜欢使用字符串。我宁愿处理日期组件。 下面的代码创建的日期为8:00和16:30,然后比较日期以查看当前日期/时间是

  • 问题是:我有一个包含时间和值(时间=长毫秒和双值)的数据列表。我现在需要计算不同时间范围内的几个平均值 我每秒最多可以得到50个值,但有时只有几个值,需要保持最后10秒,所以500个值。 我想要的是:计算时间的平均值 我可以保证没有时间是双倍的,所以它可以用作一把钥匙。 目前,我使用一个数组来存储值,并且有一个位置标记,一旦达到500,它就会重置为0,所以旧的条目会被重新调整样式。我可以很容易地改

  • 假设您有一个间隔列表,例如[(0 4),(1 3),(2 5),(2 6)]。此列表未排序。然后给您一个范围,如[1 5]。您必须返回适合范围内的间隔数。在这个问题中,它将返回2。((1 3)和(2 5)) 间隔列表保持不变,但我们最多得到100000个查询,每个查询由一个范围组成。对于每个范围查询,我们必须返回适合其中的间隔数。 在研究之后,我读到了间隔树。但是,您只能查询与任何给定范围重叠的间

  • 问题内容: 我试图了解在多个JavaConfig上下文中放置注释的正确位置在哪里? 考虑以下情形:我在JPAConfig.java和AppConfig.java中具有服务bean集的JPA配置。然后,在RootConfig.java中编写整个应用程序配置。 我在JPAConfig.java中定义事务管理器,并启用对JPA存储库的扫描- 当这些暴露事务行为时,我将其放到JPAConfig上,并且它可

  • 问题内容: …或者如何在for循环条件中使用索引 大家好,因为我们在Swift 3中没有使用c风格的循环,所以我似乎找不到一种表达一些复杂的循环的方法,所以也许您可以帮我一下。 如果我要写这个 快速3我该怎么做? 我的关闭时间是: 但这当然会一次迭代5个块,如果我是:5、25、125等。 有任何想法吗? 谢谢 问题答案: 使用辅助函数(最初在将使用除法的C样式for循环转换为Swift3时定义 您

  • 很久以前,我在准备面试时遇到了这个问题,认为这是一个需要解决的有趣问题。问题是这样的:找到一组区间的覆盖范围例如-给定[1,4)、[-2,3)、[9,10):输出应该是7(区间集覆盖-2,-1,0,1,2,3,9)。 我最初的方法是迭代区间集;将每个间隔中的数字添加到已排序的链表中。如果排序列表中已存在任何数字,请跳过它。我相信这需要O(N^2)时间和O(N)空间,所以我们可能会做得更好。 或者,