编程语言「描述符」漫谈——以C++与Rust为例的行为声明与类型描述

编程语言中有三种描述符:

  • 声明符: 表示一种动作, 比如创建变量, 定义函数等等;
  • 说明符: 也就是类型说明符, 表示一种数据类型;
  • 修饰符: 表示动作或类型的属性, 例如不可变……

swift语言就是严格遵循这些描述符的, 例如, @objc是修饰符 , 表示编译成OC兼容函数, func 是声明符, 表示声明一个函数, Int是说明符, 表示整数类型.

但是在c++中, 声明符往往是隐含的、省略的, 例如, 定义函数时:

int32_t  Sum(int32_t a, int32_t b){return a+b;
}

这里并不需要用“func”来告诉读者, 这里要进行一个函数的声明.
又如, 定义变量时,

const int a;

这里的修饰符const和说明符int是混在一起用的. 这里其实缺失了一个声明符,来告诉读者这句代码是在声明一个变量.

但其他语言, 例如rust语言中, 就会用「let」声明符, 表示当前语句是在进行变量声明.
例如, 下述语句表示定义一个可变变量(mut表示可变的, rust中默认是不可变的).

let mut val1: i32 = 1; 

rust语言中的函数声明, 则首先要用一个「fn」表示声明的是一个函数, 参数的类型则在参数名的后面, 由一个冒号+类型表示, 例如下式:

fn sum(a: i32, b:i32)->i32{a+b
}

看起来也是非常一目了然的.

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

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

相关文章

x264编解码库 -介绍和使用示例

目录 1:X264简单介绍 1.1:编译x264 1.2:x264简单介绍 1.3:x264的优势 1.4:x264与FFmpeg的关系 1.5:x264 编解码原理 1.6 进一步学习资源 2:demo效果 3:完整代码 4:附件…

python类的内置函数:setattr、getattr

setattr 是 Python 的内置函数,用于设置对象属性的值。通过 setattr 函数,可以动态地为对象添加或修改属性,而无需直接访问对象的属性。 语法 setattr(object, name, value) object:要设置属性的对象。name:属性的名…

6 网络

6 网络 1、概念2 IP地址3、套接字4、TCP协议4.1 TCP协议的基本特征4.2 建立连接4.4 终止连接4.5 编程模型 5、UDP协议5.1 UDP协议的基本特性5.2 常用函数5.3 UDP通信模型 6、域名解析 1、概念 计算机网络是实现资源共享和信息传递的计算机系统 ISO/OSI网络协议模型 TCP/IP协…

C语言进阶 10. 字符串

C语言进阶 10. 字符串 文章目录 C语言进阶 10. 字符串10.1. 字符串10.2. 字符串变量10.3. 字符串输入输出10.4. 字符串数组10.5. 单字符输入输出10.6. 字符串函数strlen()10.7. 字符串函数strc()10.8. 字符串函数strcpy()10.9. 字符串搜索函数10.10. PAT10-0. 说反话 (20)10-1.…

idea中导入外部依赖并打包到jar包中

前言: 很多时候在我们写项目对接三方的时候都需要导入三方jar包,而这时候我们用平常的pom里面写依赖发现导入不了(直接把jar包放在本地导入的话打包的话也不会将该依赖打包进我们项目的jar包),我在网上找了几种方法 …

Linux网络-ss命令

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注我,我尽量把自己会的都分享给大家,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux服务器作为一个常用的网络服务器,主要的作用就是向客户端提供网络…

【C++】C++11中R字符串的作用

在 C11 中添加了定义原始字符串的字面量 1.定义和基本使用 定义方式为: R"xxx(原始字符串)xxx"其中 () 两边的字符串可以省略,R只会处理括号中的字符串。 原始字面量 R 可以直接表示字符串的实际含义,而不需要额外对字符串做转义…

谷歌团队新技术Alchemist:使用扩散模型对材料属性进行参数控制

Alchemist是由谷歌团队和麻省理工学院联合研发的一项创新技术,它利用扩散模型对材料属性进行精细的参数控制。这项技术的核心在于能够对真实图像中的物体材料属性进行调整,包括粗糙度、金属感、反照率和透明度等。Alchemist的实现依赖于先进的文本到图像…

typescript 定义接口

// 定义对象接口 interface objType {info: {name: string,age?: number},other?: object,[props: string]: any };function fn1(params: objType) {console.log(params.info.name); }; fn1({info: {name: "全易"},love: "吃喝玩乐" })// 定义函数接口 i…

java-多线程使用

Slf4j public class RunnableMaster {/*** 默认线程池*/private static final ExecutorService DEFAULT_EXECUTOR_SERVICE Executors.newFixedThreadPool(16);/*** 实例线程池*/private final ExecutorService executorService;/*** 任务数*/private final AtomicInteger task…

【时时三省】(C语言基础)循环语句while(2)

山不在高,有仙则名。水不在深,有龙则灵。 ——csdn时时三省 getchar和scanf的作用 示例: int main ( ) { char password[20] ( 0 ) ; printf ( "请输入密码:> " ); scanf ( " %s…

Sping项目只能勾选17和21 (已解决) 导致的后续Invalid bound statement (not found):

问题发现 今天创建项目的时候发现 idea初始化spring的时候选择不了Java8 解决方案:替换URL为 https://start.aliyun.com/ 将IDEA页面创建Spring项目,其实是访问spring initializr去创建项目。故我们可以通过阿里云国服去间接创建Spring项目。 将https://start.spr…

LeetCode——682. 棒球比赛

通过万岁!!! 题目:题目的大致意思就是给你一个数组,里面有可能是一个具体的数据,有可能是“”、“D”、“C”等符号。然后让你求这个数组最后的和。但是如果遇到则表示前面两个数字之和。遇到D表示前面一个…

使用 VMware vCenter Server(vSphere Client)迁移 ESXi 虚拟机

我需要将虚拟机 k8s-dev-node4从 ESXi 主机 192.168.1.161 迁移到 ESXi 主机 192.168.1.162 上,使用 VMware vCenter Server(vSphere Client)在浏览器上可视化操作,将这个需求变的非常简单。 1、选中需要迁移的虚拟机&#xff0c…

【AI落地应用实战】Amazon Bedrock +Amazon Step Functions实现链式提示(Prompt Chaining)

一、链式提示 Prompt Chaining架构 Prompt Chaining 是一种在生成式人工智能(如大型语言模型)中广泛使用的技术,它允许用户通过一系列精心设计的提示(Prompts)来引导模型生成更加精确、丰富且符合特定需求的内容。 P…

获取手机当前信号强度(dbm/asu值)解决 getGsmSignalStrength()总是返回99问题

能看到这篇文章说明网上哪些获取 (dbm/asu值)不适合你,不是他们的代码不正确,而是不符合你的情况 比如安卓6获取android手机信号强度 可以看这篇文章 https://blog.csdn.net/sinat_31057219/article/details/81134030 当然如果你…

vue 一个数组 获取最大值与最小值

<template><div>最小值: {{ minValue }}最大值: {{ maxValue }}</div> </template><script> export default {data() {return {numbers: [10, 2, 33, 4, 55, 6]};},computed: {minValue() {return Math.min(...this.numbers);},maxValue() {retu…

OAuth 2.0 介绍和使用示例

OAuth 2.0 是一种开放标准授权协议,用于安全地让第三方应用访问用户在另一个服务上的资源,而无需暴露用户的凭证。OAuth 2.0 主要用于 Web 应用程序、桌面应用程序、移动应用程序和物联网设备等场景。 OAuth 2.0 的含义 资源所有者(Resource Owner):通常是最终用户。客户…

计算机网络网络安全

1、计算机网络通信面临的两大威胁 被动攻击&#xff08;截获/流量分析&#xff09;&#xff1a;攻击者从网络上窃听他人的通信内容 主动攻击&#xff1a; &#xff08;1&#xff09;篡改&#xff08;更改报文流&#xff09;&#xff1a;攻击者恶意篡改网络上传送的报文。 &…

Javaweb项目|springboot医院管理系统

收藏点赞不迷路 关注作者有好处 文末获取源码 一、系统展示 二、万字文档展示 基于springboot医院管理系统 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringSpringMVCMyBatisVue 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 编号&#xff1a;…