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

在Swift中什么是切片?

邢法
2023-03-14
问题内容

Swift中的切片是什么,它与数组有何不同?

从文档中,下标(Range)的类型签名为:

subscript(Range<Int>) -> Slice<T>

为什么不返回另一个Array<T>而不是一个Slice<T>

看起来我可以将切片与数组连接起来:

var list = ["hello", "world"]
var slice: Array<String> = [] + list[0..list.count]

但这会产生错误:

无法找到接受提供的参数的“下标”的重载

var list = ["hello", "world"]
var slice: Array<String> = list[0..list.count]

什么是切片?


问题答案:

切片指向数组。当数组已经存在并且切片只能描述其所需部分时,再也没有必要制作另一个数组。

加法会导致隐式强制,因此可以正常工作。为了使您的作业正常进行, 需要强制执行以下操作:

var list = ["hello", "world"]
var slice: Array<String> = Array(list[0..<list.count])


 类似资料:
  • Swift中的切片是什么?它与数组有何不同? 从文档中可以看出,下标(范围)的类型签名是: 为什么不返回另一个而不是? 看起来我可以将一个片与一个数组连接起来: 但这会产生错误: 找不到接受所提供参数的“subscript”的重载 什么是切片?

  • 问题内容: 我无法理解AnyObject的局限性。 您可以从标题中看到Array是一个结构。但是,此代码有效: 而且不只是文字数组: 但是,我不能为我分配一个结构: 那么,数组毕竟不是真正的结构吗? 问题答案: 这是桥接出现时最有趣的部分… 默认情况下,Swift bridge (和朋友) 至 至 因此,如果需要,编译器会将它们更改为对象 你可以做 并且您不能将/ 分配给,因为它们不是对象类型(可

  • 有人在IRC中提到它是切片问题。

  • 问题内容: 当尝试扩展非传统的“类型”(如或)时,我看到此错误: 非标称类型“任何”均不能扩展 那么,什么使类型非标称呢?什么是一个非标称型等之间的差异或和常规标称型样? 问题答案: 这有点猜测(编辑:这是错误的,请看),但是这里是: 是协议,而不是实际类型。“标称”一词意味着命名(基于词的词根)。 所以您不能扩展,因为它是一个协议,而不是实际的类型,并且您不能扩展,因为它只是一个元组文字,也不是

  • 问题内容: 我对&符号的了解只是一点点的了解,但有时我会在变量名的前面看到它。将a 放在变量前面有什么作用? 问题答案: 用作使变量成为输入输出参数。实际上,输入输出表示通过参考传递值,而不是通过值传递值。而且,它不仅需要通过引用接受值,还需要通过引用传递值,所以用&传递值,而不是 如您所见,您可以在Swift的错误处理中使用它,您必须创建一个错误引用并将其传递给使用该函数的函数,如果发生错误,该

  • 问题内容: 在Swift 2.2中阅读Darwin库时,我发现了以下代码。 第二行中的“ @_silgen_name”是什么? 我从这里找到了以下信息,但是我想要更多详细信息,例如Apple Developer Library。 如果只是要从C调用的一组特定的Swift函数,则可以使用@_silgen_name属性覆盖改写的名称,和/或使它们成为@convention(c)以使用C调用约定。 问题