Skip to content

Commit 27fe35b

Browse files
committed
revert merge
1 parent 7c0c86a commit 27fe35b

File tree

1 file changed

+27
-36
lines changed

1 file changed

+27
-36
lines changed

cachematrix.R

Lines changed: 27 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,38 @@
1-
## Creating a special object for caching calculations
2-
# example:
3-
# m <- matrix(1:4,c(2,2))
4-
# mci <- makeCacheMatrix({message("calculating");solve(m)})
5-
# cacheSolve(mci)
6-
# cacheSolve(mci) # should not print message again, should insted inform about cache use
7-
# mcs <- makeCacheMatrix(solve(m,c(1,1))
8-
# cacheSolve(mcs)
9-
10-
# Class for creating matrices with
11-
# ability to cache results of operations
12-
# see CacheOps$help(getResult)
13-
CachedOps <- setRefClass("CachedOps",
14-
fields = list(result = "function", cached = "logical"),
1+
## Creating a special object for calculating properties of matrix
2+
## e.g. inverse with caching options
3+
4+
## Class for creating matrices with
5+
## ability to cache results of operations
6+
7+
CachedOpsMatrix <- setRefClass("CachedOpsMatrix",
8+
fields = list(value = "matrix" ),
159

1610
methods = list(
17-
initialize = function(expr,...){
18-
cached <<- FALSE
19-
result <<- function(){
20-
cached <<- TRUE
21-
expr
22-
}
11+
initialize = function(...){
12+
my.inverse <<- NULL
2313
callSuper(...)
2414
},
2515

26-
getResult = function(){
27-
"Calculating result of operation on matrix.
28-
Once it was calculated result is cached and returned in any consecutive call"
29-
if(cached) message("getting cached data")
30-
result()
16+
getInverse = function(){
17+
"Calculating inverse of matrix. Once it was calculated result is cached and returned in any consecutive call"
18+
if(is.null(my.inverse))
19+
my.inverse <<- solve(value)
20+
else message("getting cached data")
21+
my.inverse
3122
})
3223
)
3324

34-
makeCacheMatrix <- function(expr,...) {
35-
# Creating new caching object
36-
# Args:
37-
# func - function, result of calculation is need to cache
38-
# ... - parameters for function calling
39-
CachedOps$new(expr,...)
25+
## Creating new caching object
26+
27+
makeCacheMatrix <- function(x = matrix()) {
28+
CachedOpsMatrix$new(value = x)
4029
}
4130

42-
cacheSolve <- function(x) {
43-
# Calculating result of function on matrix
44-
# once it was calculated result is cached
45-
# and returned in any consecutive call
46-
x$getResult()
31+
32+
## Calculating inverse of matrix
33+
## once it was calculated result is cached
34+
## and returned in any consecutive call
35+
36+
cacheSolve <- function(x, ...) {
37+
x$getInverse()
4738
}

0 commit comments

Comments
 (0)