Inizia subitoInizia gratis

Scrivere il metodo Next

Quando gli oggetti hanno più classi, potresti voler chiamare i metodi per diverse di queste classi. Questo si fa usando NextMethod() (docs).

I metodi S3 ora hanno la forma:

an_s3_method.some_class <- function(x, ...)
{
  # Agisci su some_class, poi
  NextMethod("an_s3_method")
}

Cioè, NextMethod() dovrebbe essere l’ultima riga del metodo.

Questo esercizio fa parte del corso

Programmazione orientata agli oggetti con S3 e R6 in R

Visualizza corso

Istruzioni dell'esercizio

La variabile kitty e la funzione generica what_am_i() sono già definite nel tuo workspace.

  • Esplora il tuo workspace con ls.str().
  • Completa la definizione del metodo cat per what_am_i().
    • Scrivi un message() (docs) con "I'm a cat".
    • Chiama NextMethod() (docs), passando il nome della generica come stringa.
  • Definisci un metodo mammal per what_am_i().
    • Gli argomenti sono gli stessi del metodo cat.
    • Scrivi un message() con "I'm a mammal".
    • Chiama NextMethod().
  • Definisci un metodo character per what_am_i().
    • Gli argomenti sono gli stessi del metodo cat.
    • Scrivi un message() con "I'm a character vector".
    • Non chiamare NextMethod().
  • Chiama what_am_i() con kitty come input, verificando che vengano mostrati tutti e tre i messaggi.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# Inspect your workspace
ls.str()

# cat method
what_am_i.cat <- function(x, ...)
{
  # Write a message
  ___
  # Call NextMethod
  ___
}

# mammal method
___ <- ___

# character method
___ <- ___

# Call what_am_i()
___
Modifica ed esegui il codice