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

在Swift中使用Map更改自定义结构属性

怀宇
2023-03-14
问题内容

我定义了以下结构。

struct Person {

    var firstName :String
    var lastName :String
    var active :Bool
}

我创建了一个Person集合,如下所示:

var persons :[Person] = []

for var i = 1; i<=10; i++ {

    var person = Person(firstName: "John \(i)", lastName: "Doe \(i)", active: true)
    persons.append(person)
}

现在,我尝试使用以下代码将active属性更改为false:

let inActionPersons = persons.map { (var p) in

    p.active = false
    return p
}

但我收到以下错误:

Cannot invoke map with an argument list of type @noescape (Person) throws

有任何想法吗?

解:

看起来Swift有时无法推断类型,这有点la脚!解决方法如下:

let a = persons.map { (var p) -> Person in

        p.active = false
        return p
}

这不起作用:

let a = persons.map { p in

        var p1 = p
        p1.active = false
        return p1
}

问题答案:

当使用方括号作为参数时var,必须将返回类型也放入:

let inActionPersons = persons.map { (var p) -> Person in

    p.active = false
    return p
}


 类似资料:
  • 问题内容: 我希望能够用元数据注释我的类型和方法,并在运行时读取它们。 语言参考说明了如何声明属性用法,但实际上可以声明自己的属性吗? 阅读将需要某种反射机制,我根本无法在参考文献中找到这种反射机制,因此问题的第二部分可能是- 是否可能反射。如果这些功能在Swift中不可用,是否可以用Objective-C代码完成(但在Swift实例和类型上)? 相对不相关的注释:关于将什么建模为属性以及将哪些内

  • 我已经扩展了TreeCell和TreeItem类。MyTreeItem包含一个自定义属性,我在MyTreeCell中使用它来渲染图形/字体等。问题是当我设置MyTreeCell.custom属性我不知道如何使TreeView/单元格重绘。 例如: 任何关于解决方案或(缺乏)设计方法的意见都受到赞赏。

  • 下面的例子中,main.go 使用了一个结构体,它来自 struct_pack 下的包 structPack。 示例 10.5 structPack.go: package structPack type ExpStruct struct { Mi1 int Mf1 float32 } 示例 10.6 main.go: package main import ( "fmt

  • 我有以下结构:

  • 设置新值后,我需要使用Apache Poi更新自定义属性。 我有为自定义属性设置新值的方法: 但是当我打开文档时,属性值已经过时。我必须手动更新它们。

  • 更新(阅读后传递额外的属性到maven原型:生成): 我创造了自己的原型。src/main/资源/原型资源/pom.xml: 想要使用我自己的第三方deps工件和第三方deps版本参数。所以我添加了src/main/resources/META-INF/maven/archetype元数据。xml文件: 将archetype安装到我的本地存储库中。然后根据我的自定义原型创建工件: mvn原型:生成