local()
एक सिंगलटन पैटर्न लागू कर सकते हैं - जैसे, snow
पैकेज इस का उपयोग करता है एक RMPI उदाहरण है कि उपयोगकर्ता बना सकते हैं ट्रैक करने के लिए।
getMPIcluster <- NULL
setMPIcluster <- NULL
local({
cl <- NULL
getMPIcluster <<- function() cl
setMPIcluster <<- function(new) cl <<- new
})
local()
भी एक स्क्रिप्ट में स्मृति का प्रबंधन करने, उदाहरण के लिए, बड़े मध्यवर्ती खंड की अंतिम पंक्ति पर अंतिम वस्तु बनाने के लिए आवश्यक वस्तुओं के आवंटन में इस्तेमाल किया जा सकता है। बड़े मध्यवर्ती वस्तुओं कचरा संग्रहण जब local
रिटर्न के लिए उपलब्ध हैं।
बंद करने के लिए फ़ंक्शन का उपयोग करना एक कारखाना पैटर्न है - bank account उदाहरण के लिए आर प्रलेखन में उदाहरण, जहां हर बार open.account
लागू किया जाता है, एक नया खाता बनाया जाता है।
@otsaw उल्लेख के रूप में, Memoization एक क्रॉलर में, स्थानीय, जैसे का उपयोग कर लागू किया जा सकता कैश वेब साइटों के
library(XML)
crawler <- local({
seen <- new.env(parent=emptyenv())
.do_crawl <- function(url, base, pattern) {
if (!exists(url, seen)) {
message(url)
xml <- htmlTreeParse(url, useInternal=TRUE)
hrefs <- unlist(getNodeSet(xml, "//a/@href"))
urls <-
sprintf("%s%s", base, grep(pattern, hrefs, value=TRUE))
seen[[url]] <- length(urls)
for (url in urls)
.do_crawl(url, base, pattern)
}
}
.do_report <- function(url) {
urls <- as.list(seen)
data.frame(Url=names(urls), Links=unlist(unname(urls)),
stringsAsFactors=FALSE)
}
list(crawl=function(base, pattern="^/.*html$") {
.do_crawl(base, base, pattern)
}, report=.do_report)
})
crawler$crawl(favorite_url)
dim(crawler$report())
(Memoization के सामान्य उदाहरण, फाइबोनैचि संख्या, संतोषजनक नहीं है - की सीमा संख्याएं जो आर के न्यूमेरिक प्रतिनिधित्व को ओवरफ्लो नहीं करती हैं, वह संभवतः कुशलता से पूर्व-गणना वाले मानों की एक लुक-अप तालिका का उपयोग करेगी)। दिलचस्प है कि यहाँ क्रॉलर एक सिंगलटन है; आसानी से कारखाने के पैटर्न का पालन किया जा सकता है, तो प्रति बेस यूआरएल एक क्रॉलर।
'स्थानीय' सुविधाजनक बनाने वाला एक और पैटर्न ज्ञापन है। आर इन्फर्नो में कहीं एक उदाहरण है। – otsaw
क्रॉलर एक सिंगलटन होने के बारे में आपका विचार दिलचस्प है क्योंकि स्थानीय के लिए एक विकल्प बिना किसी तर्क के अज्ञात फ़ंक्शन का मूल्यांकन करना है - एक कारखाना पैटर्न बेस यूआरएल पर बंद होने का उपयोग कर सकता है। – hadley