R Setter class 中的方法

R Setter method in class

当我在class中写setter方法时,setter方法并没有改变值。我只是找不到这里的错误。

point <- function(x,y){
  structure(class = "point", list(
    # attributes
    x = x,
    y = y,
    # methods
    get_x = function() paste("(", x,",",y,")"),
    set_x = function(x,y){ self.x = x; self.y =  y}

  ))}


> p <- point(0,1)
> p$get_x()
[1] "( 0 , 1 )"

> p$set_x(6,5)
> p$get_x()

[1] "( 0 , 1 )"

尝试对您的代码进行此更改。
在函数 set_x 中,是在函数 point 中创建的变量 xy 的值被赋予新值 <<-,而不是 [=12] =] 和 y 存在于 .GlobalEnv.

point <- function(x, y){
  structure(class = "point", list(
    x = x,
    y = y,
    get_x = function() paste("(", x,",",y,")"),
    set_x = function(x, y){ 
      x <<- x
      y <<- y
    }
  ))
}

x <- 0
y <- 1

p <- point(0,1)
p$get_x()
#[1] "( 0 , 1 )"

p$set_x(6,5)
p$get_x()
#[1] "( 6 , 5 )"

x
#[1] 0

y
#[1] 1