R 与x27之间的差异;通用';和';方法';?
我注意到R中的以下函数有两种稍微不同的分类: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;
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是的,没错。