代码之家  ›  专栏  ›  技术社区  ›  KarlP

赋值运算符的重载与长度函数的组合是如何工作的?

  •  3
  • KarlP  · 技术社区  · 6 年前

    如何实现 length()

    v ,如何将长度设置为12?

    length(v) <- 12
    

    我可以创建自己的函数以同样的方式重载操作符吗?

    everyOther(v) <- 7
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Rich Scriven    6 年前

    那些赋值函数就是这些函数。它们可以用以下形式书写(请注意背面标记-必须使用它们),其中 fname 区分函数名。

    `fname<-` <- function(x, value) { ... }
    

    everyOther 赋值函数可以写成

    `everyOther<-` <- function(x, value) {
        x[c(FALSE, TRUE)] <- value
        x
    }
    

    我们可以像使用它一样使用它 length(x) <- value

    v <- 1:20
    everyOther(v) <- 7
    v
    # [1]  1  7  3  7  5  7  7  7  9  7 11  7 13  7 15  7 17  7 19  7