I'm curious as to precisely why someone would want to do this. On Sat, Mar 4, 2017 at 11:49 AM, Da Zheng <zhengda1...@gmail.com> wrote:
> I'm just curious. Why making "if" generic is even more dangerous? > > Best, > Da > > On Sat, Mar 4, 2017 at 1:22 PM, Gábor Csárdi <csardi.ga...@gmail.com> > wrote: > > `!` is a generic, `if` is not. You can define an `if` that is generic, > > but this might be even more dangerous.... > > > > ❯ `if` <- function(a, b, c) UseMethod("if") > > ❯ `if.default` <- function(a,b,c) base::`if`(a, b, c) > > ❯ `if.foo` <- function(a, b, c) FALSE > > ❯ a <- structure(42, class = "foo") > > > > ❯ if (a) TRUE else FALSE > > [1] FALSE > > > > ❯ if (1) TRUE else FALSE > > [1] TRUE > > > > Gabor > > > > On Sat, Mar 4, 2017 at 5:47 PM, Da Zheng <zhengda1...@gmail.com> wrote: > >> Thanks. > >> Can I override it for a specific class? > >> I can do that for operators such as "!". For example, "!.fm" works for > >> objects of the class "fm". > >> It seems I can't do the same for "if". > >> > >> Best, > >> Da > >> > >> On Sat, Mar 4, 2017 at 12:41 PM, Gábor Csárdi <csardi.ga...@gmail.com> > wrote: > >>> You can. Perhaps needless to say, be careful with this. > >>> > >>> ❯ `if` <- function(...) FALSE > >>> ❯ if (TRUE) TRUE else FALSE > >>> [1] FALSE > >>> > >>> G. > >>> > >>> On Sat, Mar 4, 2017 at 5:36 PM, Da Zheng <zhengda1...@gmail.com> > wrote: > >>>> Hello, > >>>> > >>>> I heard we can override almost everything in R. Is it possible to > >>>> override "if" keyword in R to evaluate my own object instead of a > >>>> logical value? > >>>> > >>>> Thanks, > >>>> Da > >>>> > >>>> ______________________________________________ > >>>> R-devel@r-project.org mailing list > >>>> https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel