如何在 Swift 中构建递归函数以返回字符串? [英] How can I build a recursive function in Swift to return a String?
本文介绍了如何在 Swift 中构建递归函数以返回字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个 Node 类,定义如下.value: T
是一个 String
I have a Node class defined as follows. value: T
is a String
class Node<T> {
var value: T
weak var parent: Node?
var children = [Node<T>]()
init(_ value: T) {
self.value = value
}
func add(_ node: Node<T>) {
children.append(node)
node.parent = self
}
}
我想构建一个函数来返回当前节点值和所有父值的字符串.理想情况下,该函数将在类中定义.例如,
I'd like to build a function to return a String of the current Node's value and all Parent values. Ideally, the function would be defined in the class. For example,
currentnode.listAllValues()
would return -> "/parent2value/parent1value/currentnodevalue"
到目前为止,以下函数使用一个简单的 print()
,我也考虑过使用 inout
参数.
So far the following function works with a simple print()
, and I've also considered using an inout
parameter.
func listAllValues(node: Node<String>) {
print(node.value)
if node.parent?.value != nil {
listAllValues(node: node.parent!)
}
}
推荐答案
给你:
func desc(_ s:String? = nil) -> String {
var me = String(describing:self.value)
if let prev = s {
me += "/" + prev
}
return self.parent?.desc(me) ?? me
}
示例:
let n = Node("hey")
n.add(Node("ho"))
n.children.first?.add(Node("nonny nonny no"))
let start = n.children.first!.children.first!
print(start.desc())
这篇关于如何在 Swift 中构建递归函数以返回字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文