当前位置: 首页 > news >正文

38-其他地方使用模式

38-其他地方使用模式

模式除了可以在 match 表达式中使用外,还可以使用在变量定义(等号左侧是个模式)和 for in 表达式(for 关键字和 in 关键字之间是个模式)中。

但是,并不是所有的模式都能使用在变量定义和 for in 表达式中,只有 irrefutable 的模式才能在这两处被使用,所以只有通配符模式、绑定模式、irrefutable tuple 模式和 irrefutable enum 模式是允许的。

  1. 变量定义和 for in 表达式中使用通配符模式的例子如下:

    main() {let _ = 100for (_ in 1..5) {println("0")}
    }
    

    上例中,变量定义时使用了通配符模式,表示定义了一个没有名字的变量(当然此后也就没办法对其进行访问),for in 表达式中使用了通配符模式,表示不会将 1..5 中的元素与某个变量绑定(当然循环体中就无法访问 1..5 中元素值)。编译执行上述代码,输出结果为:

    0
    0
    0
    0
    
  2. 变量定义和 for in 表达式中使用绑定模式的例子如下:

    main() {let x = 100println("x = ${x}")for (i in 1..5) {println(i)}
    }
    

    上例中,变量定义中的 x 以及 for in 表达式中的 i 都是绑定模式。编译执行上述代码,输出结果为:

    x = 100
    1
    2
    3
    4
    
  3. 变量定义和 for in 表达式中使用 irrefutable tuple 模式的例子如下:

    main() {let (x, y) = (100, 200)println("x = ${x}")println("y = ${y}")for ((i, j) in [(1, 2), (3, 4), (5, 6)]) {println("Sum = ${i + j}")}
    }
    

    上例中,变量定义时使用了 tuple 模式,表示对 (100, 200) 进行解构并分别和 xy 进行绑定,效果上相当于定义了两个变量 xyfor in 表达式中使用了 tuple 模式,表示依次将 [(1, 2), (3, 4), (5, 6)] 中的 tuple 类型的元素取出,然后解构并分别和 ij 进行绑定,循环体中输出 i + j 的值。编译执行上述代码,输出结果为:

    x = 100
    y = 200
    Sum = 3
    Sum = 7
    Sum = 11
    
  4. 变量定义和 for in 表达式中使用 irrefutable enum 模式的例子如下:

    enum RedColor {Red(Int64)
    }
    main() {let Red(red) = Red(0)println("red = ${red}")for (Red(r) in [Red(10), Red(20), Red(30)]) {println("r = ${r}")}
    }
    

    上例中,变量定义时使用了 enum 模式,表示对 Red(0) 进行解构并将构造器的参数值(即 0)与 red 进行绑定。for in 表达式中使用了 enum 模式,表示依次将 [Red(10), Red(20), Red(30)] 中的元素取出,然后解构并将构造器的参数值与 r 进行绑定,循环体中输出 r 的值。编译执行上述代码,输出结果为:

    red = 0
    r = 10
    r = 20
    r = 30
    

相关文章:

38-其他地方使用模式

38-其他地方使用模式 模式除了可以在 match 表达式中使用外,还可以使用在变量定义(等号左侧是个模式)和 for in 表达式(for 关键字和 in 关键字之间是个模式)中。 但是,并不是所有的模式都能使用在变量定…...

单片机按键扫描程序,可以单击、双击、长按,使用状态机,无延时,不阻塞。

根据按下时的时长、间隔来判断是否是连按或者长按。当连按间隔很短时,计录连按次数超过连接间隔时,回报按下次数根据按键次数自行判断是单击、双击、三击、四击。。。最多记录15击。 结构体版: #define KEY_CHANNEL_COUNT (6 8 8) struct…...

Django中自定义模板字符串

首先在目录中创建名为 templatetags 的文件夹 然后在文件中创建 python 文件 然后再相应的 HTML 模板文件中导入 {% load python的文件名 %} 然后在 HTML 文件中通过进行使用 {% 函数名 %} python文件中的代码 首先导入 from django import templateregister template…...

暴雨总裁孙辉:混合式人工智能是大势所趋

当前,生成式人工智能技术的突破和发展,大大加速了各行各业的数字化、智能化进程。在充满不确定性的全球发展环境下,人工智能已成为驱动未来增长最确定、最核心的力量。 对此,暴雨总裁孙辉认为,2025年,人工…...

【小制作】米家模拟手指点击

代码功能解释 这段代码是一个基于Arduino平台的控制程序,主要功能包括: 初始化:设置引脚模式、初始化编码器、舵机和EEPROM。按键检测:处理按钮的单击、双击和长按事件,并根据事件执行相应操作。编码器更新&#xff…...

【深度学习入门_基础篇】线性代数本质

开坑本部分主要为基础知识复习,新开坑中,学习记录自用。 学习目标: 熟悉向量、线性组合、线性变换、基变换、矩阵运算、逆函数、秩、列空间、零空间、范式、特征指、特征向量等含义与应用。 强烈推荐此视频: 【官方双语/合集】…...

047_小驰私房菜_Qcom 8系列,Jpeg GPU 旋转

【问题背景】 横屏模式下,发现有些三方app拍照旋转了90度。 【修改策略】 adb shell setprop endor.debug.camera.overrideGPURotationUsecase 1 或者在/vendor/etc/camera/camxoverridesettings.txt 里面添加如下内容 overrideGPURotationUsecase1 【解释】 Ga…...

Elasticsearch 操作文档对数据的增删改查操作 索引库文档 操作数据 CRUD

介绍 在 Elasticsearch 中,文档的增、删、改、查操作是核心的基本功能。Elasticsearch 使用 RESTful API 提供这些操作,通常通过 HTTP 请求与 Elasticsearch 集群进行交互。 索引库 {"mappings": {"properties": {"title&qu…...

最新MySQL面试题(2025超详细版)

2025最新超详细MySQL面试题 文章目录 2025最新超详细MySQL面试题[toc]一、 SQL 和基本操作1. SQL的执行顺序2. 如何优化MySQL查询3. 常用的聚合函数4. 数据库事务5. 事务的四大特性(ACID)6. 视图7. MySQL中使用LIMIT子句进行分页8. MySQL中使用变量和用户定义的函数9. MySQL中的…...

使用MPTCP+BBR进行数据传输,让网络又快又稳

1.前言 在前文《链路聚合技术——多路径传输Multipath TCP(MPTCP)快速实践》中我们使用mptcpize run命令实现了两个节点间通信使用MPTCP协议进行传输,并实现了传输速率的聚合。 实际应用中更推荐原生支持mptcp的应用,在MPTCP官网中可以看到如TCPDump、…...

滴滴数据分析80道面试题及参考答案

如何衡量分类好坏? 衡量分类好坏有多种方法,常用的有准确率、精确率、召回率、F1 值、ROC 曲线与 AUC 值等。 准确率:是指分类正确的样本数占总样本数的比例,计算公式为:准确率 = (分类正确的样本数)/(总样本数)。准确率越高,说明分类器整体的分类效果越好,但在正负…...

基于物联网疫苗冷链物流监测系统设计

1. 项目开发背景 随着全球对疫苗运输要求的提高,特别是针对温度敏感型药品(如疫苗)的冷链管理,如何保证疫苗在运输过程中的温度、湿度、震动等环境因素的稳定性已成为亟需解决的问题。疫苗运输过程中,任何温度或湿度的…...

计算机网络基础(7)中科大郑铨老师笔记

应用层 目标:  网络应用的 原理:网络应用协议的概念和实现方面 传输层的服务模型 客户-服务器模式 对等模式(peerto-peer) 内容分发网络  网络应用的 实例:互联网流行的应用层协 议  HTTP  FTP  SMTP / POP3 / IMAP  DNS…...

GOGOGO 抽象

抽象其实也算面向对象特征之一 抽象 含义:当多个子类中的共性向上提取,父类中不知道如何写具体实现,因为提取的共性并不一定能解决子类中实现的功能【同结构不一定同实现代码体】,就需要抽象概念 作用 父类只抽取结构&#xff…...

STM32-笔记26-WWDG窗口看门狗

一、简介 窗口看门狗用于监测单片机程序运行时效是否精准,主要检测软件异常,一般用于需要精准检测程序运行时间的场合。 窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器(有的地方说7位。其实都无所谓&#xff0…...

10.装饰器

装饰器的基本用法创建简单的装饰器带参数的装饰器装饰器链类装饰器内置装饰器 定义:装饰器是一个函数,它接受另一个函数作为参数,并返回一个新的函数。装饰器通常用于在函数执行前后添加额外的功能,如日志记录、权限检查、性能测试等。 1.基…...

uniapp H5页面实现懒加载

在 uniapp 中,要在小的 view 内实现列表懒加载,可以通过以下步骤来实现: 使用 scroll-view 组件来创建一个可滚动的区域。在 scroll-view内 部放置一个list组件,用于显示数据列表。监听 scroll-view 的滚动事件,当滚动…...

STM32使用UART发送字符串与printf输出重定向

首先我们先看STM32F103C8T6的电路图 由图可知,其PA9和PA10引脚分别为UART的TX和RX(注意:这个电路图是错误的,应该是PA9是X而PA9是RX,我们看下图的官方文件可以看出),那么接下来我们应该找到该引脚的定义是什么&#xf…...

NLP初识

目录 0简介一、自然语言概述1. 什么是NLP?2. NLP常用工具0简介 NLP系列开始更新了!!!这个系列主要会介绍一些NLP的基础概念,比如RNN、LSTM、GRU等内容,重头戏放在大语言模型的基础讲解上,其中大语言模型的分享主要由两个方面:1.基础结构(Seq2Seq,Attention,Transfor…...

解決當前IP地址僅適用於本地網路

想要解決“當前IP地址僅適用於本地網路”其實並不困難。本篇文章將介紹其發生的原因以及如何解決。 “僅限本地網路”是什麼意思? 當IP地址為“僅限本地網路”時,意味著設備正在使用私人網路內部IP地址,但無法連接到互聯網。如果將本地IP視…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...

41道Django高频题整理(附答案背诵版)

解释一下 Django 和 Tornado 的关系&#xff1f; Django和Tornado都是Python的web框架&#xff0c;但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架&#xff0c;鼓励快速开发和干净、实用的设计。它遵循MVC设计&#xff0c;并强调代码复用。Django有…...