2013-06-11 55 views
-1

我是R語言的新手,所以我想我應該說明這個需求,就像Java 現在我們知道R可以支持OOP,所以我想從ClassA的調用ClassB的方法我如何從R語言中ClassA調用ClassB,ClassA和ClassB在不同的文件中

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(); 
    } 
} 

憑什麼我中的R語言翻譯實現這一目標年齡?

+0

在R中有幾個OOP框架。你需要指定你正在使用哪一個。提供一些R代碼來演示你正在嘗試做什麼可能不會有什麼壞處。很多能夠幫助你的R人可能不知道關於Java的第一件事。 – joran

+0

感謝joran,你能給出一些關於github或其他開源資源庫中的OOP框架的鏈接或名稱嗎? – clevertension

+0

如果您甚至不熟悉R中可用的主要OOP框架,那麼現在就提出這個問題爲時尚早。先做一些研究。 – joran

回答

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 

當你談論「類」的「其他文件」之中,那麼你可能需要學習的命名空間的封裝建設和照顧和餵養。您可以附加軟件包以及通過命名空間加載。 R函數可能有點類似於Java類(相當寬鬆地使用英語,但不是Java或R),但在R中,術語'class'指的是用於派發函數的對象的屬性。

相關問題