ReferenceClasses - RとLinuxと...

RとLinuxと...


ReferenceClasses

RのいわゆるS5クラスを弄ってみた

times   <- setRefClass ("myS5",
               fields = list (name  = "character", 
               now = function() Sys.time() ),
               methods = list (
                   initialize = function (){
                    "初期化のメッセージ"
                    cat ("初期化します\n")
                   # .self <<- initFields(name = "DEFAULT")
                     initFields (name = "デフォルト値")
                      },
                   reply = function () {
                       "時刻を返す関数"
                     cat (name, "さん,ただいまの時間は",
                        format(now, "%Y年%b %d %a曜日 %X "),
                            "です\n")
                     },
                    change = function (newName){
                       "nameフィールドを書き換えます"
                       name <<- newName
                     }
                     )
                   )

# フィールド一覧を参照する

times$fields ()

# メソッドの一覧を表示する

times$methods ()

# デフォルトでの初期化

obj1 <- times$new ()

# 引数指定での初期化

obj1 <- times$new (name = "石田")

# メソッドの説明を参照する

times$help("reply")

obj1$reply ()

# メソッドの説明を参照する

times$help("change")

obj1$change("鈴木")
obj1$reply ()

# Getter Setter を定義する

times$accessors("now", "name")

# メソッドの一覧を表示する

times$methods ()
obj1$getNow ()
obj1$setName ("佐藤")
obj1$reply ()

# メソッドを追加

times$methods (
              message = function (x) {
                cat (x, "さん初めまして\n")
              }  )
obj1$message ("加藤")
 
Link: Rの備忘録(1824d)
Last-modified: 2011-02-10 (木) 20:46:25 (2865d)