Quá Nhiều Lớp

Lập trình hướng đối tượng với S3 và R6 trong R

Richie Cotton

Data Evangelist at DataCamp

x <- c(1, 3, 6, 10, 15)

class(x) <- c( "triangular_numbers", "natural_numbers", "numeric" )
Lập trình hướng đối tượng với S3 và R6 trong R
is.numeric(x)
TRUE
is.triangular_numbers(x)
Error: could not find function "is.triangular_numbers"
Lập trình hướng đối tượng với S3 và R6 trong R
inherits(x, "triangular_numbers")
TRUE
inherits(x, "natural_numbers")
TRUE
inherits(x, "numeric")
TRUE
Lập trình hướng đối tượng với S3 và R6 trong R
what_am_i <- function(x, ...) {
  UseMethod("what_am_i")
}
Lập trình hướng đối tượng với S3 và R6 trong R
what_am_i.triangular_numbers <- function(x, ...) {
  message("I'm triangular numbers")
  NextMethod("what_am_i")
}
what_am_i.natural_numbers <- function(x, ...) {
  message("I'm natural numbers")
  NextMethod("what_am_i")
}
what_am_i.numeric <- function(x, ...) {
  message("I'm numeric")
}
Lập trình hướng đối tượng với S3 và R6 trong R
what_am_i(x)
Tôi là số tam giác
Tôi là số tự nhiên
Tôi là số numeric

ch2_4-too-much-class.017.png

Lập trình hướng đối tượng với S3 và R6 trong R
what_am_i(x)
Tôi là số tam giác
Tôi là số tự nhiên
Tôi là số numeric

ch2_4-too-much-class.018.png

Lập trình hướng đối tượng với S3 và R6 trong R
what_am_i(x)
Tôi là số tam giác
Tôi là số tự nhiên
Tôi là số numeric

ch2_4-too-much-class.019.png

Lập trình hướng đối tượng với S3 và R6 trong R
what_am_i(x)
Tôi là số tam giác
Tôi là số tự nhiên
Tôi là số numeric

ch2_4-too-much-class.020.png

Lập trình hướng đối tượng với S3 và R6 trong R

Tóm tắt

  • Cho phép có nhiều lớp
  • Dùng inherits() để kiểm tra lớp bất kỳ
  • Dùng NextMethod() để xâu chuỗi lời gọi phương thức
Lập trình hướng đối tượng với S3 và R6 trong R

Luyện tập nào!

Lập trình hướng đối tượng với S3 và R6 trong R

Preparing Video For Download...