在自己的 `ggproto` 对象中访问父对象
Access parent within own `ggproto` object
我想在我自己的 ggproto
对象中访问父方法的 compute_group()
。这里有两种不同的工作方法,但不知道是否是“正确”的方法:
self$super()$compute_group(...)
ggproto_parent(<parent>, self)$compute_group(...)
有什么(强烈的)意见吗?
我只是在这里建议正确的方法是使用您的第二种方法。一个原因是 ?ggproto
的文档是这样写的:
To explicitly call a methods in a parent, use ggproto_parent(Parent, self).
第二个原因是 ggplot2 源代码从不使用 self$super()$method()
,从中您可以推断出它不打算以这种方式使用。
要考虑的第三个选项是直接在您的代码中调用 OtherClass$compute_group()
。这应该可行,因为 ggproto 类 被设计为无状态的,所以如果您遵守无状态规则,这应该是安全的。 ggplot2 book 提到这种模式比 ggproto_parent()
方法更普遍,因为它的清晰度和同等的安全性。
我想在我自己的 ggproto
对象中访问父方法的 compute_group()
。这里有两种不同的工作方法,但不知道是否是“正确”的方法:
self$super()$compute_group(...)
ggproto_parent(<parent>, self)$compute_group(...)
有什么(强烈的)意见吗?
我只是在这里建议正确的方法是使用您的第二种方法。一个原因是 ?ggproto
的文档是这样写的:
To explicitly call a methods in a parent, use ggproto_parent(Parent, self).
第二个原因是 ggplot2 源代码从不使用 self$super()$method()
,从中您可以推断出它不打算以这种方式使用。
要考虑的第三个选项是直接在您的代码中调用 OtherClass$compute_group()
。这应该可行,因为 ggproto 类 被设计为无状态的,所以如果您遵守无状态规则,这应该是安全的。 ggplot2 book 提到这种模式比 ggproto_parent()
方法更普遍,因为它的清晰度和同等的安全性。