在包中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
Run Code Online (Sandbox Code Playgroud)
为了帮助我更好地理解上面的例子,有人可以解释父承诺是什么,以及它是否/如何与常规承诺不同?
MrF*_*ick 13
没有一种叫做"父母承诺"的特殊事物.只有承诺.但承诺可能会指向另一个承诺.该parent_promise功能基本上走上了承诺链,找到了第一个非承诺.
所以,当你调用f(x),这反过来又要求g(y)用y (promise)-> x.既然你永远不会计算y,该参数一起传递的承诺h(z)与z (promise)-> y.所以
z (promise)-> y (promise)-> x (promise)-> x+1
Run Code Online (Sandbox Code Playgroud)
因此,调用parent_promise(z)链上升以找到第一个非承诺对象,在每种情况下都是表达式x+1