我正在用Vapor制作一个Web应用程序。
我有很多东西,例如:
[“事物”,“其他事物”,“第三件事”]
我想在结构中使用具有相同名称但将" "
替换为"+"
的空字符串变量。
我不能使用字典或数组,因为蒸气需要字符串中的各个变量。我无法手动编写所有内容的原因是,我希望能够将内容添加到我的数组中,而不必也将它们添加到其他位置。
我可以自己进行替换,我只需要知道是否有可能使变量脱离数组元素。
我是Swift的新手,我不知道从哪里开始。
感谢您的帮助
答案 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