ts:函数的重载

news2024/11/5 15:53:05

ts:函数的重载

  • 1 主要内容说明
  • 2 例子
    • 2.1 函数的重载
      • 2.1.1 源码1 (函数的重载)
      • 2.1.2 源码1运行效果
  • 3.结语
  • 4.定位日期

1 主要内容说明

重载函数可以提高类型安全性,内容灵活性和可读性。重载允许同一个函数定义多个参数类型的数量,在编译时检查函数调用的参数是否符合这些重载签名,从而提高类型的安全性。同时还可以灵活的根据不同的参数组合实现不同的逻辑,适用于多种使用场景。如,可以处理正方形、长方形、长方体及多块长方体的体积计算。通过重载,函数名保持一致,使得函数接口更加清晰简洁。使用者可以直接地看到这个函数可以处理哪些不同的参数组合。
举例比较如下

  • 当使用重载时:
function calculateArea(wide: number): number; // 正方形
function calculateArea(wide: number, length: number): number; // 长方形
function calculateArea(wide: number, length: number, height: number): number; // 长方体
function calculateArea(wide: number, length: number, height: number, num: number): number; // 多块长方体
function calculateArea(wide: number, length?: number, height?: number, num?: number): number {
    // 实现...
}

  • 当不使用重载时:
function calculateSquareArea(wide: number): number {
    return wide * wide;
}

function calculateRectangleArea(wide: number, length: number): number {
    return wide * length;
}

function calculateCuboidVolume(wide: number, length: number, height: number): number {
    return wide * length * height;
}

function calculateMultipleCuboidVolume(wide: number, length: number, height: number, num: number): number {
    return wide * length * height * num;
}

通过以上对比,使用重载的函数在处理复杂的参数组合时更加优雅且易于管理,能有效提高代码的可维护性和可读性。

2 例子

2.1 函数的重载

2.1.1 源码1 (函数的重载)

// 函数重载声明
function way1(wide: number): number; // 计算正方形的面积
function way1(wide: number, length: number): number; // 计算长方形的面积
function way1(wide: number, length: number, height: number): number; // 计算长方体的体积
function way1(wide: number, length: number, height: number, num: number): number; // 计算多块长方体的总体积

// 实际函数实现
function way1(wide: number, length?: number, height?: number, num?: number): number {
    // 如果只有宽度,计算正方形的面积
    if (length === undefined && height === undefined && num === undefined) {
        return wide * wide; // 正方形面积
    }
    // 如果只提供宽度和长度,计算长方形的面积
    else if (height === undefined && num === undefined) {
        return wide * length; // 长方形面积
    } 
    // 如果只提供宽度、长度和高度,计算长方体的体积
    else if (num === undefined) {
        return wide * length * height; // 长方体体积
    }
    // 如果提供了所有参数,计算多块长方体的总体积
    else {
        return wide * length * height * num; // 多块长方体的总体积
    }
}

// 测试输出
console.log("正方形面积:" + way1(5)); // 正方形面积
console.log("长方形面积:" + way1(3, 9)); // 长方形面积
console.log("图形体积为:" + way1(2, 5, 6)); // 长方体体积
console.log("图像总体积为:" + way1(5, 3, 10, 5)); // 多块长方体总体积

2.1.2 源码1运行效果

在这里插入图片描述

3.结语

某种情况下,函数重载用得好,也助于我们整理逻辑能力,使得编写的程序不那么繁杂,变得条理有序,且优雅而美观。
由于笔者的能力有限,创作的内容有所不足在所难免,也敬请读者包涵和指出,万分感谢!

4.定位日期

2024-11-2;
20:07;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

qt QTabWidget详解

1、概述 QTabWidget是Qt框架中的一个控件,它提供了一个标签页式的界面,允许用户在不同的页面(或称为标签)之间切换。每个页面都可以包含不同的内容,如文本、图像、按钮或其他小部件。QTabWidget非常适合用于创建具有多…

telnet 密码模式 访问路由器

telnet 密码访问华为路由器 模拟被访问路由 sy [Huawei]int g0/0/0 //选中 g0/0/0端口 [Huawei-GigabitEthernet0/0/0]ip add 192.168.1.1 24 //设置端口ip [Huawei]user-interface vty 0 4 //配置vty [Huawei-ui-vty0-4]set authentication password cipher huawei123 //设置…

项目模块1~12总结:服务器大模块梳理

一、思维导图 二、设计思路 1、各种回调函数梳理 服务器里面包含了监听套接字和监听到的通信套接字(新连接),我们要对这两种套接字进行设置回调函数,其中监听套接字里面只要设置读回调,通信套接字要设置5种回调&…

UE4安卓Gradle工程中的libUE4.so的生成原理

流程图 流程图放在最前面,下面是讲解。 libUE4.so 问:在UE4安卓开发中,libUE4.so即是符号表,又是引擎代码native,是吗? 答:是的,libUE4.so在UE4安卓开发中既包含符号表,…

Linux下Nginx的安装与使用

Linux下Nginx的安装与使用 博客: www.lstar.icu 开源地址 Gitee 地址: https://gitee.com/lxwise/iris-blog_parent Github 地址: https://github.com/lxwise/iris-blog_parent 序言 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子…

STM32 HAL库 SPI驱动1.3寸 OLED屏幕

目录 参考硬件引脚与接线 点亮屏幕CubeMX 配置OLED 驱动程序代码 参考 基于STM32F103C8T6最小系统板HAL库CubeMX SPI驱动7针 OLED显示屏(0.96寸 1.3寸通用)0.96 oled HAL库驱动 SPI STM32SPI驱动0.96/1.3寸 OLED屏幕,易修改为DMA控制STM32驱…

江协科技STM32学习- P26 UART串口外设

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

基于Abaqus的高纯铝不同应变率下单晶塑性变形的取向依赖性研究

文章题目:《Strain rate effect of high purity aluminum single crystals: Experiments and simulations》 文章doi:10.1016/j.ijplas.2014.10.002 推荐理由:作者研究了高纯铝不同应变率下单晶塑性变形的取向依赖性,不同应变率…

虚拟现实与增强现实:重塑娱乐和教育的边界!

内容概要 在这个瞬息万变的时代,虚拟现实(VR)和增强现实(AR)正如两位魔法师,腾云驾雾间掀起了一场教育与娱乐的革命。虚拟现实带我们飞跃平凡,进入一个充满奇迹的数字宇宙,仿佛我们…

【论文分享】利用机器学习和计算机视觉技术增强城市街道峡谷中的PM2.5实时监测

本文以兰州市为研究区域使用计算机视觉技术从交通摄像头拍摄的交通图像中提取实时交通流量和街景特征,以预测PM2.5浓度,并解释道路环境变化对PM2.5水平的影响。 【论文题目】 Enhancing urban real-time PM2.5 monitoring in street canyons by machine…

《双指针篇》---复写零(标的简单,实际比较复杂)

题目传送门 方法一:双指针 我们发现不能从前向后复写,因为会覆盖掉还没有被复写的数据 因此我们需要从后往前复写。 此时left应该指向最后一个被复写的数。 right指向数组最后一个元素 1.找到最后一个被复写的数据。我们用left指向 ①先判断left的位置0/…

Docker(二):Docker的基本使用

1 Docker的基本使用 1.1 镜像相关操作 1、从DockerHub搜索镜像 [rootmaster ~]# docker search centos # 镜像名字 描述 星标 是否官方(有OK表示为官方镜像) NAME …

SQL Server 可观测最佳实践

SQL Server 简介 SQL Server 是微软公司开发的一款关系数据库管理系统,支持企业 IT 环境中的各种事务处理、商业智能和分析应用程序。它支持多种操作系统平台,而无论是物理还是虚拟形式,自建部署环境还是在云环境中,运行的操作系…

PyEcharts | 认识图形--饼图和玫瑰图

饼图和玫瑰图 饼图玫瑰图rosetype 参数 饼图 from pyecharts.charts import Pie import pyecharts.options as optsfrom pyecharts.globals import CurrentConfig,NotebookType CurrentConfig.NOTEBOOK_TYPE NotebookType.JUPYTER_LAB CurrentConfig.ONLINE_HOST OnlineHos…

ros与mqtt相互转换

vda5050 VDA5050协议介绍 和 详细翻译-CSDN博客 ros与mqtt相互转换 如何转换的,通过某个中转包,获取ros的消息然后以需要的格式转换为mqtt 需要的参数 ros相关 parameters[ (ros_subscriber_type, vda5050_msgs/NodeState), (ros_subscriber_queue…

这几款AI搜索产品,你用过几个?

AI搜索产品逐步走进普通大众的视野,当然也会有更多的产品进入市场供大家选择。 以下是一些常见的 AI 搜索产品: 综合型 AI 搜索平台: Perplexity:海外较受欢迎的 AI 搜索引擎,拥有百万用户。它利用 GPT、Claude、Llam…

[代码随想录打卡 Day3] 链表理论基础 203.移除链表元素 707.设计链表 206.反转链表

(ง •_•)ง今天出去玩了,只刷完了视频,做了部分题,就是具体整理明天整理。希望坚持下去。啊啊啊啊啊啊啊啊啊啊啊 链表理论基础 基础的就是单链表。 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成&#xff0…

OpenCV基本操作(python开发)——(8)实现芯片瑕疵检测

OpenCV基本操作(python开发)——(1) 读取图像、保存图像 OpenCV基本操作(python开发)——(2)图像色彩操作 OpenCV基本操作(python开发)——(3&…

LLM | 论文精读 | CVPR | SelTDA:将大型视觉语言模型应用于数据匮乏的视觉问答任务

论文标题:How to Specialize Large Vision-Language Models to Data-Scarce VQA Tasks? Self-Train on Unlabeled Images! 作者:Zaid Khan, Vijay Kumar BG, Samuel Schulter, Xiang Yu, Yun Fu, Manmohan Chandraker 期刊:CVPR 2023 DOI…

产品思维笔记(一):打造用户喜爱的产品by Marty Cagan

全文摘要 《启示录:打造用户喜爱的产品》是由美国著名产品经理Marty Cagan所著,他曾经是eBay最出色的产品经理之一,也是Google X实验室的创始人之一。在这本书中,他分享了自己的经验和教训,帮助读者更好地理解如何打造…