【问题标题】:Is there a way to yield variable from multi layer function or inner function?有没有办法从多层函数或内部函数中产生变量?
【发布时间】:2019-07-19 08:49:06
【问题描述】:

用 ES6 喜欢这段代码:

function* outer() {
    function* inner() {
        var a = 100
        yield a
    }

    var gen = inner()
    var result = gen.next()
    yield result.value
}

function caller() {
    var gen = outer()
    var result = gen.next()
}
caller()

我可以在没有外部桥接功能的情况下直接在调用者中处理内部的生成器结果吗? 如果没有,是否有更好的设计来解决生成器自动运行和生成器递归? 谢谢

另一个问题?蟒蛇呢?

def outer():
    def inner():
        a = 100
        yield a

        b = 200
        yield b

    gen = inner()
    result = next(gen)
    yield result
    # it works not like js version
    # yield inner()


def caller():
    gen = outer()
    result = next(gen)
    print("caller result : ", result)
caller()

【问题讨论】:

    标签: javascript python generator


    【解决方案1】:

    在生成器中使用yield*,您可以从另一个生成器中生成所有项目:

    function* outer() {
        function* inner() {
            var a = 100
            yield a
        }
        yield* inner();
    }
    
    function caller() {
        var gen = outer()
        var result = gen.next()
        console.log(result);
    }
    caller()

    【讨论】:

    • 谢谢。这就是我想要的另一个问题是如果这段代码是python,有没有这样的方法?
    • 对不起,我不懂Python(好吧)
    • Python可以使用'yield from',它喜欢js中的'yield*'
    猜你喜欢
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多