-1

I am a newbie in R language, so I think i should illustrate this requirement just as Java now we know R can support the OOP, so I want to invoke ClassB method from ClassA

ClassB.java

public class ClassB {
    public void printB() {
       System.out.println("a");
    }
}

ClassA.java

//if they are in the same package, use it directly
//or we must import ClassB explicitly
public class ClassA {
    public void invokeB() {
       ClassB b = new ClassB();
       b.printB();
    }
}

so how can i achieve this in R language?

4

1 回答 1

0

这就是 S3 方法分派系统中类的分配方式。正如 Java 用户所理解的那样,它并不是真正的 OOP。该proto包提供了一个更类似于 Java 风格 OOP 的框架。方法调度的 S4 系统提供了多参数签名匹配和更规范的方法……这是大多数 R 用户无法理解的。

 newItem <- "bbb"
class(newItem) <- "newClass"
print(newItem)
#[1] "bbb"
#attr(,"class")
#[1] "newClass"
 print.newClass <- function(n) cat("this is of the newClass", n)
 print(newItem)
#this is of the newClass bbb
 otherItem <- "xxxx"
 inherits(otherItem, "newClass")
#[1] FALSE

 class(otherItem) <- c( class(otherItem), "newClass")
 print(otherItem)
#this is of the newClass xxxx

当您谈论“类”在“不同的文件”中时,您可能需要研究包构造以及 NAMESPACE 的护理和喂养。您可以附加包以及通过命名空间加载。R 函数可能有点类似于 Java 类(在英语中相当松散的使用,但不是 Java 或 R),但在 R 中,术语“类”是指用于调度函数的对象的属性。

于 2013-06-11T18:54:57.947 回答