Swift数组元素到变量

时间:2019-07-30 10:14:59

标签: swift vapor

我正在用Vapor制作一个Web应用程序。

我有很多东西,例如:

  

[“事物”,“其他事物”,“第三件事”]

我想在结构中使用具有相同名称但将" "替换为"+"的空字符串变量。

我不能使用字典或数组,因为蒸气需要字符串中的各个变量。我无法手动编写所有内容的原因是,我希望能够将内容添加到我的数组中,而不必也将它们添加到其他位置。

我可以自己进行替换,我只需要知道是否有可能使变量脱离数组元素。

我是Swift的新手,我不知道从哪里开始。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

let array = ["thing", "other thing", "third thing"]
let newArray = array.map { $0.replacingOccurrences(of: " ", with: "+") }

print(newArray)
// ["thing", "other+thing", "third+thing"]

答案 1 :(得分:0)

我希望我能正确理解你。您可以使用@dynamicMemberLookup动态查找struct / class属性。这是一个示例,但我不知道您打算在何处使用此功能以及是否有帮助。

import Foundation

let replaced = ["thing", "other thing", "third thing"].map {$0.replacingOccurrences(of: " ", with: "_")}

@dynamicMemberLookup
struct User {
    subscript(dynamicMember m: String) -> String? {
        if replaced.contains(m) {
            return "soemthing for that thing"
        }

        return nil
    }
}

let u = User()
print(u.other_thing)
print(u.thinga)

因为属性名称中不允许使用+,所以必须使用_ insetad。如果您确实想使用+进行访问,则可以使用print(u[dynamicMember: "other+thing"])进行访问。要使用此功能,您还必须替换$0.replacingOccurrences,用" "替换+

这是有关@dynamicMemberLookup https://docs.swift.org/swift-book/ReferenceManual/Attributes.html

的更多信息