Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift “如何改变”;[任何]”;至;任何……”;_Swift - Fatal编程技术网

Swift “如何改变”;[任何]”;至;任何……”;

Swift “如何改变”;[任何]”;至;任何……”;,swift,Swift,首先,我想为我的项目建立一个私人日志。因此,我创建了一个函数tkprint(items:Any…来调用系统日志print(items:Any… 但是,在函数tkprint(items:Any…)中,我只能得到Any。所以,我想知道如何将“[任何]”改为“任何” 我知道我可以将项目简化为一个项目来解决问题 例如: func somewhere() { tklog("Hello", "swift", "!") } func tklog(_ items: Any...) { //ite

首先,我想为我的项目建立一个私人日志。因此,我创建了一个函数
tkprint(items:Any…
来调用系统日志
print(items:Any…

但是,在函数
tkprint(items:Any…
)中,我只能得到
Any
。所以,我想知道如何将“[任何]”改为“任何”

我知道我可以将项目简化为一个项目来解决问题

例如:

func somewhere() {
    tklog("Hello", "swift", "!")
}
func tklog(_ items: Any...) {
    //items is ["Hello", "swift", "!"]
    tkprint(items)
}
func tkprint(_ items: Any...) {
    //items is [["Hello", "swift", "!"]]
    print(items)
}
打印:

[[你好,斯威夫特!]

目标:

func somewhere() {
    tklog("Hello", "swift", "!")
}
func tklog(_ items: Any...) {
    //items is ["Hello", "swift", "!"]
    tkprint(parse(items))
}
func tkprint(_ items: Any...) {
    //items is ["Hello", "swift", "!"]
    print(parse(items))
}
func parse(items: [Any]) -> Any... {
    //items is ["Hello", "swift", "!"]
    //TODO: parse
    return "Hello", "swift", "!"
}
打印:

你好,斯威夫特


您不能返回
Any…
对于方法
parse(\uitems:Any)
,您可以返回
Any
String
进行打印

func somewhere() {
    tklog("Hello", "swift", "!")
}
func tklog(_ items: Any...) {
    //items is ["Hello", "swift", "!"]
    tkprint(parse(items))
}
func tkprint(_ items: Any...) {
    //items is ["Hello", "swift", "!"]
    print(parse(items))
    // Hello swift !
}
func parse(_ items: Any) -> Any {
    //items is ["Hello", "swift", "!"]
    if let items = items as? [String] {
        return items.reduce("") { "\($0) \($1)" }
    } else {
        return ""
    }
}

func parse(_ items: Any...) -> [Any] {
    return items.map{ $0 }
    // ["hello", "swift", "!"]
}

func parse(_ items: Any...) -> Any {
    return items.map{ $0 }
    // ["hello", "swift", "!"]
}

嗯…很好的解决方案,就像我做的一样。但我们能在不减少“项目”的情况下做到这一点吗。我希望返回一个项目,而不是一个项目。您不能返回
Any…
,您可以返回
[Any]
Any
,然后进行一些转换,如
map
reduce
。看我的编辑,我学会了。也许你是对的,我不能用
Any…
类型将
[Any]
发送到
打印(项目:Any…
)。我不想知道“如何将
[Any]
发送到
打印(项目:Any…
”。但是,我想我只能知道这一点。