Rust学习笔记_11——函数

Rust学习笔记_08——String
Rust学习笔记_09——模式匹配
Rust学习笔记_10——守卫


函数

文章目录

    • 函数
      • 1. 函数定义
      • 2. 示例
      • 3. 函数同日中的表达式和语句
      • 4. 参数
        • 4.1 必选参数
        • 4.2 可选参数
        • 4.3 参数默认值
      • 5. 高阶函数


Rust语言中的函数是构成程序的基本模块,用于封装可重复使用的代码块。在Rust中,函数具有明确的结构和特性,这使得代码既强大又安全。

1. 函数定义

Rust中的函数使用fn关键字进行定义。

fn function_name(parameters) -> return_type {// 函数体
}// fn:关键字,用于声明一个函数。
// function_name:函数的名称。
// parameters:函数的参数列表,使用圆括号括起来。如果没有参数,则可以为空。
// return_type:函数的返回类型。如果函数不返回任何值,则可以使用-> ()来表示空元组类型,即返回unit类型。
// 函数体:包含执行语句的代码块,用大括号{}括起来。

2. 示例

fn add(a: i32, b: i32) -> i32 {a + b
}fn main() {let result = add(5, 3);println!("The result is {}", result);
}

3. 函数同日中的表达式和语句

  1. 表达式:任何返回值的代码片段。在Rust中,如果函数体的最后一个表达式没有分号,它会被自动返回
  2. 语句:执行某种操作但不返回值的代码片段

4. 参数

4.1 必选参数
fn add(a: i32, b: i32) -> i32 {a + b
}fn main() {let result = add(5, 3); // 调用函数时,必须提供a和b两个参数println!("The result is {}", result);
}
4.2 可选参数

在Rust中,可选参数通常通过标准库中的Option类型来实现。Option是一个枚举类型,它有两个变体:Some(T)None。当你想让一个参数在函数调用时是可选的时,你可以将该参数的类型设置为Option<T>

fn greet(name: Option<&str>) {match name {Some(n) => println!("Hello, {}!", n),None => println!("Hello, World!"),}
}fn main() {greet(Some("Alice")); // 提供可选参数greet(None); // 不提供可选参数
}
4.3 参数默认值
fn greet_with_default(name: Option<&str>) {let name = name.unwrap_or("Guest"); // 如果name为None,则使用"Guest"作为默认值println!("Hello, {}!", name);
}fn main() {greet_with_default(Some("Alice")); // 提供参数greet_with_default(None); // 不提供参数,使用默认值
}

5. 高阶函数

高阶函数是指接收函数作为参数或返回函数的函数。Rust提供了强大的支持来处理高阶函数

fn apply_operation(a: i32, b: i32, op: fn(i32, i32) -> i32) -> i32 {op(a, b)
}fn main() {let result = apply_operation(5, 3, |x, y| x + y);println!("The result is {}", result);
}

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

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

相关文章

操作系统文件管理相关习题2

文件管理的任务和功能文件管理 任务&#xff1a;对用户文件和系统文件进行组织管理&#xff0c;以方便用户使用&#xff0c;并保证文件的安全 功能&#xff1a;文件存储空间的管理&#xff0c;目录管理&#xff0c;文件读写管理和保护 目录管理 对目录管理的要求 实现按名存…

MYSQL - 索引详解

一 什么是索引&#xff1f; 实际上在上一篇介绍MYSQL的体系结构当中我们稍微提及了一点&#xff0c;在引擎层&#xff0c;我们提到不同的引擎对应的索引的实现方式&#xff0c;选择是不一样的。 简单理解&#xff0c;索引&#xff08;index&#xff09;其实就是一种帮助MYSQL高…

AI智能体Prompt预设词指令大全+GPTs应用使用

AI智能体使用指南 直接复制在AI工具助手中使用&#xff08;提问前&#xff09; 可前往SparkAi系统用户官网进行直接使用 SparkAI系统介绍文档&#xff1a;Docs 常见AI智能体GPTs应用大全在线使用 自定义添加制作AI智能体进行使用&#xff1a; 文章润色器 你是一位具有敏锐洞察…

el-tree树形结构拖拽层级错乱问题

背景: 项目中有个文件夹树形菜单,并且各级菜单中的子级元素是可以任意拖拽的,也就是树形结构拖拽修改分组。 问题分析&#xff1a; 出现拖拽层级错乱的问题&#xff0c;这通常意味着在进行节点拖拽操作后&#xff0c;树的层级关系没有正确地被维护。这可能是因为在更新节点位…

线程和进程(juc)

线程 一&#xff1a;概念辨析 1&#xff1a;线程与进程 进程&#xff1a; 1&#xff1a;程序由指令和数据组成&#xff0c;指令要执行&#xff0c;数据要读写&#xff0c;就需要将指令加载给cpu&#xff0c;把数据加载到内存&#xff0c;同时程序运行时还会使用磁盘&#x…

Java基础集合(Map)

存储特点 以键值对的形式存储, 一个元素由两个值组成 键(K-key): 无序, 无下标, 元素不可重复 值(V-value): 无序, 无下标, 元素可以重复 常用实现类 HashMap JDK1.2 底层哈希表实现 线程不安全, 效率高 LinkedHashMap JDK1.2 是HashMap的子类, 底层哈希表实现 线程不安全…

NEXT开发应用质量建议与测试指南

随着鸿蒙原生开发如火如荼的进展&#xff0c;NEXT对应用的质量提出了更高的要求。 NEXT的应用质量分为2个部分内容&#xff1a; ⚫ 体验质量&#xff1a; 功能数据完备、基础体验、HarmonyOS特征增强体验 ⚫ 内容合规&#xff1a; 资质、内容、广告、付费、开发者行为等 单元测…

java应用cpu占用过高故障排除

首先一定要清楚&#xff1a;java应用造成cpu过高的主要原因 1&#xff1a;一般是线程一直处于可运行&#xff08;Runnable&#xff09;状态&#xff0c;通常这些线程在执行无阻塞操作、循环、正则或纯粹的计算等任务 2&#xff1a;另一个可能造成CPU高的原因是频繁GC&#xff…

CPU是如何执行任务的?

你清楚下面这几个问题吗&#xff1f; 有了内存&#xff0c;为什么还需要 CPU Cache&#xff1f; CPU 是怎么读写数据的&#xff1f; 如何让 CPU 能读取数据更快一些&#xff1f; CPU 伪共享是如何发生的&#xff1f;又该如何避免&#xff1f; CPU 是如何调度任务的&#x…

最短路径算法(Dijkstra算法 + Bellman-Ford 算法 + Floyd-Warshall算法)

最短路径算法 完整版万字原文见史上最全详解图数据结构 1. Dijkstra算法&#xff08;单源最短路径&#xff09;&#xff08;无负权边图&#xff09; 算法原理 1. Dijkstra 算法通过 贪心策略 计算从一个源顶点到其他所有 顶点的最短路径。2. 时间复杂度为 O(V^2)&#xff08…

pyqt6事件概要

例子&#xff1a; 利用qtdesigner建立闹钟 python代码 # 导入所需要的文件 from PyQt6.QtGui import QIcon, QPixmap from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QListWidgetItem from PyQt6 import uic from PyQt6.QtCore import Qt, QTime imp…

位运算符I^~

&运算&#xff1a;上下相等才是1&#xff0c;有一个不同就是0 |运算&#xff1a;只要有1返回的就是1 ^(亦或)运算&#xff1a;上下不同是1&#xff0c;相同是0 ~运算&#xff1a;非运算&#xff0c;与数据全相反 cpu核心运算原理&#xff0c;四种cpu底层小电路 例&#xf…

【求助】Tinymce组件异常

版本号 { "tinymce/tinymce-vue": "^3.0.1", "tinymce": "^5.10.9", "vue": "^2.6.10", }问题&#xff1a; 就是红框处点击后没有菜单出现&#xff0c;下面是正常的

大模型分布式训练框架——DeepSpeed

本文的主要内容是阐述DeepSpeed训练模块在跟进大模型技术中的作用&#xff0c;重点解析了RLHF在其中的应用。文中深入探讨了模型训练的关键概念&#xff0c;如显存需求、优化器迭代和混合精度训练。针对大规模模型训练&#xff0c;介绍了模型并行和流水线并行等分布式训练方法&…

跟着AI 学 AI, 开发一个ChatBot, 完整图文版__持续更新中

跟着AI 学 AI&#xff0c; 开发一个ChatBot, 完整图文版__持续更新中.记录步骤以便排查错误。 使用Python 加 Visual Studio Code&#xff0c;开发代码。 使用Flask 套件和 ngrok 工具。 Step 1 下载安装Python &#xff0c;下载完后 在CMD 测试 Python --version. 结果出现p…

Pyside6 --Qt Designer--Qt设计师--了解+运行ui_demo_1.py

目录 一、打开Qt设计师1.1 Terminal终端1.2 打开env&#xff0c;GUI虚拟环境下的scripts文件1.3 不常用文件介绍&#xff08;Scripts下面&#xff09; 二、了解Qt设计师的各个控件作用2.1 点击widget看看效果&#xff01;2.2 点击Main Window看看效果 三、编写一个简易的UI代码…

『大模型笔记』OpenAI 十二天活动第1天:o1和o1 pro

『大模型笔记』OpenAI 十二天活动第1天:o1和o1 pro 文章目录 一. 『大模型笔记』OpenAI 十二天活动第1天:o1和o1 proOpenAI的12天活动o1完整版本的发布o1 Pro模式ChatGPT Proo1的性能提升多模态输入与推理o1 Pro模式的应用模型对话与历史问题示范二. 参考文献一. 『大模型笔记…

SpringBoot 运行发生异常:java: 错误: 不支持发行版本 5

一、异常&#xff1a; 二、原因&#xff1a; 本地运行用的是JDK17&#xff0c;报错应该是项目编译配置使用的Java版本不对&#xff0c;需要检查一下项目及环境使用的Java编译版本配置。 三、解决&#xff1a;

2024.12.2——[极客大挑战 2019]Secret File 1

知识点&#xff1a;抓包 代码审计 filter伪协议 一、解题步骤 step 1 查看源代码中的信息 查看源代码发现一个php文件&#xff1a;[./Archive_room.php](http://72df1f22-85bf-47bb-b23a-efcaf88701d4.node5.buuoj.cn:81/Archive_room.php) 点进去后发现没什么用&#xff0c…

MKS EDGE Series RF Generators Power Solution 软件

MKS EDGE Series RF Generators Power Solution 软件