プリミティブなジェネリック関数
R の中核的な機能の一部は、パフォーマンス向上のために C コードへ特別な方法でアクセスする プリミティブ 関数として定義されています。プリミティブ関数の例には、if や for のような言語要素、+ や $ のような演算子、exp や sin のような数学関数があります。プリミティブ関数の中には S3 ジェネリックも含まれており、S3 のプリミティブ・ジェネリックの完全な一覧は .S3PrimitiveGenerics(docs)で確認できます。
S3 ジェネリックがプリミティブな場合、メソッド探索の仕組みが少し異なります。R は通常どおり class(docs)に基づいてメソッドを探しますが、見つからなければ内部の C コード関数が呼び出されます。(通常のジェネリックでは、メソッドが見つからないとエラーになります。)これは、オブジェクトのクラスを上書きしても、長さの計算のような基本的な挙動は壊れないことを意味します。
この演習はコースの一部です
R における S3 と R6 を使ったオブジェクト指向プログラミング
演習の手順
クラスを "hairstylist" に上書きしたリストオブジェクトが、ワークスペースで hair という変数に代入されています。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# View the structure of hair
___
# What primitive generics are available?
___
# Does length.hairstylist exist?
___
# What is the length of hair?
___