R 与x27之间的差异;通用';和';方法';?

R 与x27之间的差异;通用';和';方法';?,r,r-s3,R,R S3,我注意到R中的以下函数有两种稍微不同的分类: sloop::ftype(t.test) #>[1]“S3”“通用” sloop::ftype(t.data.frame) #>[1]“S3”方法 由(v1.0.0)于2021年4月21日创建 一个是“泛型”,另一个是“方法”,但我很难区分两者:我对“泛型”的理解是,它是一种方法——具体地说,是一种根据输入对象的类作用于输入对象的方法。方法实现泛型(或者,在技术层面上,泛型通过UseMethod调用方法) 也就是说,泛型函数调用UseMethod;

我注意到R中的以下函数有两种稍微不同的分类:

sloop::ftype(t.test)
#>[1]“S3”“通用”
sloop::ftype(t.data.frame)
#>[1]“S3”方法
由(v1.0.0)于2021年4月21日创建

一个是“泛型”,另一个是“方法”,但我很难区分两者:我对“泛型”的理解是,它是一种方法——具体地说,是一种根据输入对象的类作用于输入对象的方法。

方法实现泛型(或者,在技术层面上,泛型通过
UseMethod
调用方法)

也就是说,泛型函数调用
UseMethod
;它可能看起来像这样:

foo = function (x, ...) UseMethod('foo')
而方法是实现特定S3类的泛型的函数;例如:

foo.bar = function (x, ...) message('class of x is bar!')

啊,我明白了!所以在你的例子中,你已经为S3类
bar
定义了泛型
foo
的实现?你也可以为其他S3类编写更多的泛型实现,对吧?@Johnny是的,没错。