S3メソッドを作成する(2)
あるジェネリックに対して適切なメソッドが見つからない場合、エラーが発生します。たとえば、現時点では get_n_elements() には data.frame 用のメソッドしかありません。代わりに行列を get_n_elements() に渡すと、次のようなエラーになります。
> get_n_elements(matrix())
Error: no applicable method for 'get_n_elements' applied to an object of class "c('matrix', 'array', 'logical')"
あらゆる入力型に対して個別のメソッドを何十個も書く代わりに、特定のメソッドがない型すべてを処理するメソッドを作成できます。これは「デフォルト」メソッドと呼ばれ、常に generic.default という名前になります。たとえば、print.default()(docs)は、独自の print()(docs)メソッドを持たない任意の型のオブジェクトを出力します。
この演習はコースの一部です
R における S3 と R6 を使ったオブジェクト指向プログラミング
演習の手順
ワークスペースには、ジェネリック関数 get_n_elements() と data.frame 用のメソッドが定義されています。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# View predefined objects
___
# Create a default method for get_n_elements
___ <- ___
# Call the method on the ability.cov dataset
n_elements_ability.cov <- ___