在R中使用oop,无法理解这个概念

时间:2015-11-12 12:47:50

标签: r matlab oop

我第一次尝试在R中使用OOP,我很难理解主要概念。例如,这些是什么:

slot, setGeneric, representation

我无法通过搜索互联网找到任何有用的信息。这些如何在R中起作用?例如,我有以下MATLAB类:

classdef windTurbine < handle
properties
    NumOfBlades  
    blade@blade 
    sweptArea
end

methods
    function obj = windTurbine(NumOfBlades,blade)
        obj.NumOfBlades = NumOfBlades;
        obj.blade = blade;
        obj.sweptArea = CalcSweptArea(obj);
    end

    sweptArea = CalcSweptArea(obj)
end

我如何在R中写这个?如何向构造函数添加计算?使功能私密?并且主要使用R中的OOP概念。一个例子是有用的,或者一个很好的教程解释

1 个答案:

答案 0 :(得分:1)

除了http://adv-r.had.co.nz/OO-essentials.html,它提供了基础和推荐包中的R对象,你还有 R6 ,这与你在Matlab中所做的更接近。您的示例翻译如下:

<PropertyGroup>
  <SHFBROOT Condition=" '$(SHFBROOT)' == '' ">$(MSBuildThisFileDirectory)..\packages\EWSoftware.SHFB.2015.10.10.0\Tools\</SHFBROOT>
</PropertyGroup>

看看# Need to install R6 first: # install.packages("R6") library(R6) windTurbine <- R6Class("windTurbine", public = list( # Properties (fields) NumOfBlades = integer(0), blade = NULL, # Which kind of object is it? sweptArea = numeric(0), # Methods initialize = function(NumOfBlades, blade) { self$NumOfBlades <- as.integer(NumOfBlades) self$blade <- blade self$sweptArea <- self$CalcSweptArea() }, CalcSweptArea = function() { # < your code here> # (Return a fake value, just for testing) return(10) } )) wt <- windTurbine$new(NumOfBlades = 6, blade = 3) wt$sweptArea 。私有字段或方法也有?R6Class()参数。