18 agosto, 2021

Selo DC

Função UseMethod

  • Função primitiva
  • Correspondência padrão de argumentos
  • Usada apenas no corpo de funções
  • Sintaxe:
UseMethod(generic, object)

Usada apenas no corpo de funções

  • Exemplo com erro:
fgenerica <- function(x) print(x)
UseMethod("fgenerica")
## Error in eval(expr, envir, enclos): 'função' genérica não é uma função
  • Exemplo correto:
# Primeira sintaxe
fgenerica <- function(x) UseMethod("fgenerica")
# Segunda sintaxe
fgenerica <- function(x) {
  UseMethod("fgenerica")
}
# Terceira sintaxe
fgenerica <- \(x) UseMethod("fgenerica")
# Quarta sintaxe
fgenerica <- \(x) {
  UseMethod("fgenerica")
} 

UseMethod não cria seu próprio ambiente

# Funcao generica
quem <- function(x) {
  print("Isso pode ser impresso!")
  UseMethod("quem")
  ## Apos a Chamada UseMethod o ambiente eh encerrado!
  print("Isso nao sera impresso!")
}
## Metodo
quem.eh <- function(x) print("Sou eu! (arg x)")
# Aplicacao:
pessoa <- "ben" # objeto sem atributo 'class'
class(pessoa) <- "eh"
quem(pessoa)
## [1] "Isso pode ser impresso!"
## [1] "Sou eu! (arg x)"

Bons estudos!