From phil.joubert at landg.com  Thu Nov 11 13:13:51 2010
From: phil.joubert at landg.com (evilphil)
Date: Thu, 11 Nov 2010 04:13:51 -0800 (PST)
Subject: [Rd] S4 setMethod, setGeneric and default arguments
Message-ID: <1289477631441-3037716.post@n4.nabble.com>


Hi Guys

I have defined a generic function, for which one of the arguments has a
default:

setGeneric( "getFwdRate",
              function(.Object, tenorFrom, tenorTo=tenorFrom)
standardGeneric("getFwdRate")
          )

Then I have defined a method which also has a default:

setMethod( "getFwdRate", signature(.Object="CCurveVector",
tenorFrom="numeric", tenorTo="numeric"),
              function(.Object, tenorFrom, tenorTo=tenorFrom+1) {
	[REMOVED IRRELEVANT IMPLEMENTATION
                      }
          )

However, if I call

getFwdRate(thisYC, 1)

I get "Error in function (classes, fdef, mtable)  :  unable to find an
inherited method for function "getFwdRate", for signature "CCurveVector",
"numeric", "missing" "

Is there a way that this call would match the method I've defined? Or do I
need to declare a duplicate method with signature(.Object="CCurveVector",
tenorFrom="numeric", tenorTo="missing")? In which case what is the point of
having default arguments in the method declaration?

thanks
Phil
-- 
View this message in context: http://r.789695.n4.nabble.com/S4-setMethod-setGeneric-and-default-arguments-tp3037716p3037716.html
Sent from the R devel mailing list archive at Nabble.com.



[Rd] S4 setMethod, setGeneric and default arguments
evilphil