Funções Genéricas Primitivas
Parte das funcionalidades centrais do R é definida usando funções primitivas, que utilizam uma técnica especial para acessar código C, por questões de desempenho. Exemplos de funções primitivas incluem elementos da linguagem, como if e for, operadores como + e $, e funções matemáticas como exp e sin. Funções primitivas incluem genéricas S3; a lista completa de genéricas primitivas S3 pode ser encontrada usando .S3PrimitiveGenerics (docs).
Quando uma genérica S3 é primitiva, seu processo de busca por métodos funciona de forma um pouco diferente. O R vai procurar por métodos usando class (docs), como de costume, mas se nada for encontrado, a função interna em C será chamada. (Compare isso com genéricas regulares, onde um erro é gerado se nenhum método for encontrado.) Isso significa que, se você sobrescrever a classe de um objeto, comportamentos fundamentais, como calcular o comprimento, não serão quebrados.
Este exercicio faz parte do curso
Programação Orientada a Objetos com S3 e R6 em R
Instruções do exercicio
Um objeto lista, com a classe sobrescrita para "hairstylist", foi atribuído ao seu workspace na variável hair.
- Veja a estrutura de
haircomstr()(docs). - Liste todas as genéricas primitivas S3 que o R conhece.
- Use a função
exists()(docs) para verificar que não existe nenhuma função chamadalength.hairstylist. Observe que essa função recebe uma entrada do tipo caractere. - Calcule o
length()(docs) da variávelhair.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# View the structure of hair
___
# What primitive generics are available?
___
# Does length.hairstylist exist?
___
# What is the length of hair?
___