R 什么是父母的承诺?

R 什么是父母的承诺?,r,promise,pryr,R,Promise,Pryr,在包pryr中,有一个名为parent\u 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_promis

在包
pryr
中,有一个名为
parent\u 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
库(pryr)
示例(家长承诺)
#prnt\U p>f g h h(x+1)
#x+1
#prnt_p>g(x+1)
#x+1
#p>f(x+1)
#x+1

为了帮助我更好地理解上面的例子,有人能解释一下什么是父母承诺,以及它与常规承诺有什么不同吗?

没有什么特殊的东西叫做“父母承诺”。只有承诺。但一个承诺可能指向另一个承诺。
parent\u promise
函数基本上沿着承诺链向上走,以查找第一个非承诺

因此,当你调用
f(x)
时,它又用
y(promise)->x调用
g(y)
。由于您从不计算
y
,因此该参数将作为承诺传递给
h(z)
z(承诺)->y
。所以

z (promise)-> y (promise)-> x (promise)-> x+1

因此,调用
parent\u promise(z)
沿链向上查找第一个非承诺对象,在每种情况下都是表达式
x+1

,因此,如果父承诺指向另一个承诺,并且父承诺被评估,这是否意味着链中的所有其他承诺都得到了评估?我不太确定我是否理解你的意思。为了解决承诺,您必须评估链上的所有内容。一旦问题解决了,你就不能再将新的承诺指向原来的承诺,这样它们就不会下降。谢谢,这就是我要问的。顺便说一句,我现在建议你看看相关的功能、文档和小插曲