如何退货而不是打印

时间:2020-02-27 15:06:14

标签: python-3.x calling-convention

我通过使用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")
    }
}

我要寻找的结果是有四个键,后面跟有值。

1 个答案:

答案 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)

将会提供相似的结果。