返回首页

【r-高级】R-面向对象编程(一)(3)

时间:2019-08-03 来源:原创/投稿/转载作者:管理员点击: 162

  首先定义一个percent函数,它检查输入是否是数值向量并将输入对象类型改为percent,percent类继承numeric类:

  这里的继承指方法分派首先在percent类中方法找,找不到就去numeric类方法中找。寻找的顺序由类名称的顺序决定。

  这里指定quote=FALSE使得打印的格式化字符串更像数字而非字符串。

  可惜使用其他函数可能不会保持输入对象的类,比如sum()、mean()等:

  但如果我们组合一个百分比向量和其他数值型的值,percent类又会消失掉,我们进行相同的改进:

  假设我们想要对一些交通工具,例如汽车、公共汽车和飞机进行建模。这些交通工具有一些共性,它们都有名称、速度、位置,而且都可以移动。为了形象化描述它们,我们定义一个基本类,称为vehichle,用于存储公共部分,另外定义car、bus和airplane这3个子类,它们继承vehichle,但具有自定义的行为。

  首先,定义一个函数来创建vehicle对象,它本质上是一个环境。我们选择环境而不是列表,因为需要用到环境的引用语义,也就是说,我们传递一个对象,然后原地修改它,而不会创建这个对象的副本。因此无论什么位置将对象传递给函数,对象总是指向同一个交通工具。

  这里的class(obj) = c(class, vehicle)似乎有点语义不明。但前者是基础函数,后者是输入参数,R能够判断好。

  注意,airplane的位置是累积的。因为前面说过,它本质是一个环境,因此修改move.vehicle()中的position不会创建一个副本再修改,而是本地修改!

  用点滴记录成长为极客R。 =================== R语言学习笔记、数据分析与解决方案、文章转载与资料分享。有些内容属于付费,如果大家觉得有用,希望支持一下。 ================= 反馈与交流: 如果文章内容有问题还请指正,在评论区留言。 如果有一些针对性的疑问,请在创建issue

  写在之前 因为简书字数限制,完整版******:如有错误,烦请指正! 第1章 面向过程和面向对象程序设计 1.1 什么是面向过程的编程 定义:一种以过程为核心的编程算法,把问题的过程按照步骤...

  1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时间app再启动时花费的时间 例如:app启动时可能包含操作: 1.检查版本更新 2.初始化三方地图环信(可能还有******)分享统计 3.游客身...

  昨晚是焦点中九的第八次课,收获内容梳理如下: 咨询师在咨询中用不确定的态度,探寻式的语气,尽可能让语言软化,这样更容易建立和谐的关系。使用技术时也不是生硬地一味地用问句,而应带有更多的人情味,里面尽可能多用感叹词,语句缓慢,断断续续。 在咨询中,咨询师可能会被来访者的问题绕...

【责任编辑:管理员】
随机推荐 更多>>