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

Swift Array可选的类型和下标(测试版3)

陈泰宁
2023-03-14
问题内容

我正在使用2014年WWDC教程408:使用XCode Beta 3(30分钟)的Swift Playgrounds。自Beta
2起,Swift语法已更改。

var data = [27, 46, 96, 79, 56, 85, 45, 34, 2, 57, 29, 66, 99, 65, 66, 40, 40, 58, 87, 64]

func exchange<T>(data: [T], i: Int, j: Int) {
    let temp = data[i]
    data[i] = data[j]  // Fails with error '@lvalue $T8' is not identical to 'T'
    data[j] = temp     // Fails with error '@lvalue $T5' is not identical to 'T'
}

exchange(data, 0 , 2)
data

为什么我不能以这种方式修改可变整数数组?


问题答案:

因为子例程参数是隐式定义的,let因此是不可变的。尝试将声明更改为:

func exchange<T>(inout data: [T], i: Int, j: Int) {

以及对以下内容的调用:

exchange(&date, 0, 2)

您也可以使用,var但这仅允许在子例程中修改数组。Beta 3的最大变化是使数组真正按值传递,而不是有时只是按值传递,而不是其余时间。



 类似资料:
  • LineSeries['areaStyle']的类型是AreaStyle | undefined 报错:类型“AreaStyle | undefined”上不存在属性“color”。 如何通过 LineSeries使用color属性的类型呢?

  • 我正在创建一个ios应用程序,它使用一个用flask python编写的服务器,当我连接到服务器注册一个用户时,我的服务器中不断出现一个“NoneType”对象不可订阅错误。py文件。基本上,我的问题是,是什么导致了这个错误,以及我如何能够修复这个错误。此外,如果有人能为我指出不同或更简单的方法的正确方向,我将不胜感激,谢谢! 这是服务器。py文件: 这是我在swft中的寄存器函数: 回溯: 这里

  • 问题内容: 我正在使用Xcode 6 Beta4。我有这种奇怪的情况,我无法弄清楚如何适当地测试可选项。 如果我有可选的xyz,则是正确的测试方法: 要么 这些文档说是第一种方法,但是我发现有时第二种方法是必需的,并且不会生成编译器错误,但是有时,第二种方法会生成编译器错误。 我的具体示例是使用桥接到swift的GData XML解析器: 在这里,如果我刚做过: 它将始终返回true。但是,如果我

  • Swift 的可选(Optional)类型,用于处理值缺失的情况。可选表示"那儿有一个值,并且它等于 x "或者"那儿没有值"。 Swfit语言定义后缀?作为命名类型Optional的简写,换句话说,以下两种声明是相等的: var optionalInteger: Int? var optionalInteger: Optional<Int> 在这两种情况下,变量 optionalIntege

  • 本文向大家介绍Python的可变类型和不可变类型?相关面试题,主要包含被问及Python的可变类型和不可变类型?时的应答技巧和注意事项,需要的朋友参考一下 可变数据类型:列表、字典、可变集合 不可变数据类型:数字、字符串、元组、不可变集合    

  • 我目前正在研究Typescript中的重载。 假设我有一个重载的函数: 要么调用函数时没有参数,要么调用函数时有两个参数(foo和bar)。根据vscode的智能感知,结果变量具有布尔|未定义的类型。 为什么即使我已经测试了参数,仍然可以?如果存在,那么类型推断不应该预测也存在吗?