在包中 pryr
,有一个叫做的函数 parent_promise
。
我知道承诺是什么,但我不熟悉这个词 父母的承诺。此外,我并不真正理解文档中的示例,也许是因为我不知道我在寻找什么。
library(pryr)
example(parent_promise)
# prnt_p> f <- function(x) g(x)
# prnt_p> g <- function(y) h(y)
# prnt_p> h <- function(z) parent_promise(z)
# prnt_p> h(x + 1)
# x + 1
# prnt_p> g(x + 1)
# x + 1
# prnt_p> f(x + 1)
# x + 1
为了帮助我更好地理解上面的例子,有人可以解释一下 父母的承诺 是,如果/如何与常规承诺不同?
没有什么特别的东西叫做“父母的承诺”。只有承诺。但承诺可能会指向另一个承诺。该 parent_promise
功能基本上走上了承诺的链条,找到了第一个非承诺。
所以当你打电话 f(x)
,反过来打电话 g(y)
同 y (promise)-> x
。既然你永远不会评价 y
,该参数作为承诺传递 h(z)
同 z (promise)-> y
。所以
z (promise)-> y (promise)-> x (promise)-> x+1
所以打电话 parent_promise(z)
在链中找到第一个非承诺对象,在每种情况下都是表达式 x+1
没有什么特别的东西叫做“父母的承诺”。只有承诺。但承诺可能会指向另一个承诺。该 parent_promise
功能基本上走上了承诺的链条,找到了第一个非承诺。
所以当你打电话 f(x)
,反过来打电话 g(y)
同 y (promise)-> x
。既然你永远不会评价 y
,该参数作为承诺传递 h(z)
同 z (promise)-> y
。所以
z (promise)-> y (promise)-> x (promise)-> x+1
所以打电话 parent_promise(z)
在链中找到第一个非承诺对象,在每种情况下都是表达式 x+1