R/二进制运算符重载中的简单OOP系统
我正在探索R的功能,并试图构建一个非常简单的面向对象编程系统 其思想是使用函数环境来存储对象属性,并重载“>”操作符以替换OOP语言中通常使用的“.”。这将在下面实现R/二进制运算符重载中的简单OOP系统,r,oop,R,Oop,我正在探索R的功能,并试图构建一个非常简单的面向对象编程系统 其思想是使用函数环境来存储对象属性,并重载“>”操作符以替换OOP语言中通常使用的“.”。这将在下面实现 `>.object` <- function (this, variable) { return(eval(substitute(variable), environment(this))) } new <- function (obj) { structure(unclass(obj), class=
`>.object` <- function (this, variable) {
return(eval(substitute(variable), environment(this)))
}
new <- function (obj) {
structure(unclass(obj), class="object")
}
但是,当使用运算符>
内联时,会尝试在全局环境中解析bark()
,如果未定义,则会产生错误
max>bark() # Error in bark() : could not find function "bark"
如果在全局环境中以某种方式定义了bark
,那么就没有错误
bark = function(){}
max>bark() # Prints "Woof!"
有没有办法解决这个问题,使max>bark()
总是返回“Woof!”
bark = function(){}
max>bark() # Prints "Woof!"