我通过使用print()得到了期望的结果,但是在使用return时我希望得到相同的结果。如何将其更改为退货?当我这样做时,它只返回第一个键,值是我想要BST中的四个键。
@IBOutlet weak var btnPlay: UIButton!
var player:AVPlayer?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnPress(sender: AnyObject) {
if (btnPlay.titleLabel?.text == "Play") {
initPlayer()
btnPlay.setTitle("Stop", forState: UIControlState.Normal)
} else {
stopPlayer()
btnPlay.setTitle("Play", forState: UIControlState.Normal)
}
}
func initPlayer() {
if let play = player {
print("playing")
play.play()
} else {
print("player allocated")
player = AVPlayer(URL: NSURL(string: "http://streaming.radio.rtl.fr/rtl-1-48-192")!)
print("playing")
player!.play()
}
}
func stopPlayer() {
if let play = player {
print("stopped")
play.pause()
player = nil
print("player deallocated")
} else {
print("player was already deallocated")
}
}
我要寻找的结果是有四个键,后面跟有值。
答案 0 :(得分:5)
要完全执行您想要的操作,您需要使用yield关键字(yield from
语句here的详细信息)
def inOrder(self, aNode):
if aNode:
yield from self.inOrder(aNode.leftChild)
yield (aNode.key, aNode.payload)
yield from self.inOrder(aNode.rightChild)
这将返回一个生成器,您可以使用list(inOrder(...))
您还可以有一个专用的参数,该参数将在您执行过程中更新:
def inOrder(self, aNode, res=[]):
if aNode:
self.inOrder(aNode.leftChild, res)
res.append((aNode.key, aNode.payload))
self.inOrder(aNode.rightChild, res)
将会提供相似的结果。