为何使用4个random()方法呢,前3个都没有实现是否没有意义呢?

作者站长头像
站长
· 阅读数 5

我看到下面的一个工具类有如下4个方法:

它使用了4个random()方法在这里:

export namespace GeoUtil {
  export function random(): number
  export function random(max: number): number
  export function random(min: number, max: number): number
  export function random(min?: number, max?: number): number {
    let mmin
    let mmax

    if (max == null) {
      mmax = min == null ? 1 : min
      mmin = 0
    } else {
      mmax = max
      mmin = min == null ? 0 : min
    }

    if (mmax < mmin) {
      const temp = mmin
      mmin = mmax
      mmax = temp
    }

    return Math.floor(Math.random() * (mmax - mmin + 1) + mmin)
  }
}

请问下,1.为何使用4个random()方法呢,前3个都没有实现是否没有意义呢?2.这里的export namespace GeoUtil 和 使用 export GeoUtil 有什么区别呢?如果不用namespace可以用什么方式替代呢?

回复
1个回答
avatar
test
2024-07-09

这是函数重载的写法,表示这个函数支持多种的传参方式,比如:

  1. 可以不传参数;
  2. 只传一个参数,这一个参数表示max;
  3. 可以传两个参数;

使用上:

random();
random(5);
random(2, 5)

传一个参数时:answer image

传两个参数时:answer image

不同的传参方式,也会进行不同的提示。后面括号里的 +2overloads表示还有两个重载函数。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容