2016-01-22 2 views
0

Я хочу сделать базовую композицию объекта в R, и я столкнулся с этой простой проблемой. У меня есть 2 класса R5, «Лямбда» и «Композиция».
Класс «Композиция» имеет атрибут класса «Лямбда». Класс «Композиция» не может быть создан: ".Object$initialize(...) : argument "lambda" is missing, with no default" Он работает, если лямбда имеет значение по умолчанию в методе инициализации: initialize = function(lambda=1){ , но я не хочу этого.ReferenceClasses and object composition in R

setRefClass(
    "Lambda", 
    fields = c(
     lambda = "numeric" 
     ), 

     methods=list(
     initialize = function(lambda){ 
     check_lambda (lambda) 
     lambda <<- lambda 
     }, 

     check_lambda = function(new_lambda){ 
      print ("checking...") 
      return(T) 
     } 
    ) 
) 

setRefClass(
    "Composition", 
    fields = c(
     object_lambda = "Lambda" 
    ), 
    methods=list(
    initialize = function(object_lambda){ 
     object_lambda <<- object_lambda 
    } 
) 
) 

Благодарим за помощь.

ответ

0

Я нашел решение на мой вопрос: установите поле в «ANY» мой класс «Композиция»:

setRefClass(
    "Composition", 
    fields = c(
    object_lambda = "ANY" 
), 
    methods=list(
    initialize = function(object_lambda){ 
     object_lambda <<- object_lambda 
    } 
) 
)