基础
30 分钟阅读
给出Go、Python、Java、Rust、C/C++、JavaScript、TypeScript、C#、Erlang、PHP、Ruby各个编程语言各自的
安装、配置、卸载、更新、运行代码
关键字、保留字
Go目前有25个关键字。
来源:https://go.dev/ref/spec#Keywords
|
|
Python目前有35个关键字。
来源:https://docs.python.org/zh-cn/3.12/reference/lexical_analysis.html#keywords
|
|
来源:https://docs.oracle.com/javase/specs/jls/se21/html/jls-3.html#jls-3.9
ReservedKeyword:
|
|
ContextualKeyword:
|
|
来源:
来源:
来源:
来源:https://www.php.net/manual/en/reserved.keywords.php
|
|
来源:
查找可用模块
https://go.libhunt.com:一个 Go 语言库的集合,方便开发者查找和比较不同的库。
https://pypi.org:Python 的官方包索引,包含了成千上万的第三方库和模块。
https://awesome-python.com:一个精选的 Python 库和资源列表,涵盖了各个领域的工具和库。
https://docs.python.org/zh-cn:Python 标准库的官方文档,详细介绍了 Python 内置的模块和功能。
https://crates.io:Rust 的官方包注册中心,包含了众多的 Rust 库和工具。
https://rust.libhunt.com:一个精选的 Rust 库和资源列表,涵盖了各个领域的工具和库。
GitHub:全球最大的代码托管平台,包含了大量的 C 和 C++ 项目和库。
https://sourceforge.net:一个老牌的开源软件开发平台,提供了众多的 C/C++ 项目。
https://faraz.work/awesome-cpp:一个精选的 C++ 库和资源列表,涵盖了各个领域的工具和库。
https://www.npmjs.com:JavaScript 的包管理器,包含了大量的前端和后端库。
- https://www.nuget.org:C# 的官方包管理器,包含了大量的 .NET 库和工具。
- https://www.libhunt.com/l/c-sharp
- https://hex.pm:Erlang 和 Elixir 的包管理器,提供了众多的库和工具。
- https://www.libhunt.com/l/erlang
- https://packagist.org:PHP 的官方包仓库,包含了大量的 PHP 库和框架。
- https://php.libhunt.com
- https://rubygems.org:Ruby 的官方包管理器,提供了众多的 Ruby 库和工具。
- https://ruby.libhunt.com
模块管理工具
Go 语言的模块管理工具是 Go Modules,自 Go 1.11 版本起引入,并在 Go 1.13 版本后成为官方推荐的标准。
Go Modules 的核心文件
- go.mod: 定义了模块的名称、Go 版本以及项目的依赖关系(可以通过
go mod init <模块路径>
自动生成文件,并可通过go mod tidy
、go mod edit
、go get
等命令进行编辑)。 - go.sum: 记录了每个依赖包的哈希值,用于校验依赖包的完整性(通过
go mod tidy
或go build
等命令自动生成)。
常用的 Go Modules 命令
命令 | 描述 | 示例 |
---|---|---|
go mod init | 初始化一个新的模块,创建 go.mod 文件。 | go mod init github.com/username/projectname |
go mod tidy | 清理 go.mod 和 go.sum 文件,移除不再需要的依赖项。 | go mod tidy |
go mod vendor | 将所有依赖项复制到 vendor 目录,方便离线构建。 | go mod vendor |
go get | 下载并安装指定的包及其依赖项。 | go get github.com/some/package |
go get -u | 更新指定的包及其依赖项到最新版本。 | go get -u github.com/some/package |
go get -d | 仅下载指定的包及其依赖项,不进行安装。 | go get -d github.com/some/package |
go list -m all | 列出当前模块的所有依赖项及其版本。 | go list -m all |
go mod verify | 校验 go.mod 和 go.sum 文件中的依赖项是否与实际一致。 | go mod verify |
go clean -modcache | 清理模块缓存,释放磁盘空间。 | go clean -modcache |
go build | 编译当前模块的所有包。 | go build |
go test | 运行当前模块的所有测试。 | go test |
go run | 编译并运行指定的 Go 源文件。 | go run main.go |
go install | 编译并安装指定的包或可执行文件。 | go install github.com/some/package |
go mod graph | 打印模块的依赖图。 | go mod graph |
go mod edit | 编辑 go.mod 文件,例如添加、删除或修改依赖项。 | go mod edit -require=github.com/some/package@v1.2.3 |
go mod download | 下载 go.mod 中列出的所有依赖项到本地缓存。 | go mod download |
go mod why | 解释为什么需要某个包或模块。 | go mod why github.com/some/package |
go mod graph | 打印模块的依赖图。 | go mod graph |
go mod edit | 编辑 go.mod 文件,例如添加、删除或修改依赖项。 | go mod edit -require=github.com/some/package@v1.2.3 |
go mod vendor | 将所有依赖项复制到 vendor 目录,方便离线构建。 | go mod vendor |
pip
是Python自带的,无需安装,若有新版本只需更新。
pip
默认的配置文件
(1)用户级配置文件
操作系统 | 配置文件路径 | 说明 |
---|---|---|
Linux/macOS | ~/.config/pip/pip.conf | 新版本 pip 默认遵循 XDG 规范,优先使用此路径。旧路径 ~/.pip/pip.conf 仍兼容,但已不推荐。 |
Windows | %APPDATA%\pip\pip.ini (即 C:\Users\<用户名>\AppData\Roaming\pip\pip.ini )(%APPDATA% 表示环境变量:$env:APPDATA ,其值为:C:\Users\用户名\AppData\Roaming ) | 需显示隐藏文件夹才能看到 AppData 目录。 |
(2)全局配置文件
操作系统 | 配置文件路径 | 说明 |
---|---|---|
Linux/macOS | /etc/pip.conf | 需要管理员权限才能修改。 |
Windows | C:\ProgramData\pip\pip.ini | ProgramData 是隐藏目录,需开启 “显示隐藏文件” 才能访问。 |
pip
配置文件优先级
pip
加载配置的顺序为(后者覆盖前者):
- 全局配置 → 2. 用户配置 → 3. 虚拟环境配置(若有) → 4. 命令行参数。
pip
的更新
|
|
pip
在国内常见可用的镜像源
镜像名称 | URL |
---|---|
清华大学 | https://pypi.tuna.tsinghua.edu.cn/simple |
阿里云 | https://mirrors.aliyun.com/pypi/simple |
腾讯云 | https://mirrors.cloud.tencent.com/pypi/simple |
华为云 | https://repo.huaweicloud.com/repository/pypi/simple |
pip
的常用命令
(1)查看包的可用版本
|
|
(2)安装包
a.基本安装
|
|
b.从 Git 仓库安装
|
|
c.使用镜像加速
|
|
d.批量安装依赖
|
|
(3)升级包
|
|
(4)卸载包
|
|
(5)依赖管理
|
|
(6)列出已安装的包
|
|
(7)查看包详情
|
|
(8)设置全局镜像源
|
|
(9)查看当前配置
|
|
(10)安装开发模式(可编辑模式)
|
|
(11)忽略缓存安装
|
|
(12)限制超时时间
|
|
Maven 是 Java 项目的构建、依赖管理和项目管理工具,提供了丰富的命令来支持项目的各个阶段。
Maven的安装
- 下载 Maven
- 访问 Maven 官网:https://maven.apache.org/download.cgi
- 在 “Files” 部分,找到 “Binary Distributions” 下的最新版本(例如 apache-maven-3.9.2-bin.zip),点击下载。
- 解压 Maven
- 将下载的压缩包解压到你想要安装 Maven 的目录,例如:
C:\Program Files\Apache\apache-maven-3.9.2
。
- 配置环境变量
- 设置 MAVEN_HOME 变量:
- 在 Windows 搜索栏中输入 “环境变量”,选择 “编辑系统环境变量”。
- 点击 “环境变量” 按钮。
- 在 “系统变量” 部分,点击 “新建”。
- 变量名输入
MAVEN_HOME
,变量值输入 Maven 的安装目录,例如C:\Program Files\Apache\apache-maven-3.9.2
。 - 点击 “确定”。
- 将 Maven 的 bin 目录添加到 Path 变量:
- 在 “系统变量” 部分,找到名为 “Path” 的变量,选中并点击 “编辑”。
- 点击 “新建”,输入
%MAVEN_HOME%\bin
。 - 点击 “确定”。
- 验证安装
- 打开命令提示符(CMD)或 PowerShell。
- 输入
mvn -v
命令,按回车键。 - 如果显示 Maven 的版本信息,则表示安装成功。
- 配置 Maven(可选)
设置本地仓库:
在 Maven 安装目录下,找到
conf
文件夹,打开settings.xml
文件。找到
<localRepository>
标签,取消注释,并设置本地仓库路径,例如:1
<localRepository>D:/maven/repository</localRepository>
如果没有
repository
文件夹,需要手动创建。
配置阿里云镜像(可选,加速下载):
详细请参见:https://developer.aliyun.com/mvn/guide
在
settings.xml
文件中,找到<mirrors>
标签,添加以下内容:1 2 3 4 5 6
<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
常用的 Maven 命令及其示例
命令 | 描述 | 示例 |
---|---|---|
mvn clean | 清理项目,删除 target 目录下的所有生成物。 | mvn clean |
mvn compile | 编译项目的源代码。 | mvn compile |
mvn test | 运行项目的单元测试。 | mvn test |
mvn package | 打包项目,生成 JAR 或 WAR 文件。 | mvn package |
mvn install | 将打包后的文件安装到本地仓库。 | mvn install |
mvn deploy | 将打包后的文件部署到远程仓库。 | mvn deploy |
mvn validate | 验证项目是否正确,检查项目的有效性。 | mvn validate |
mvn verify | 运行集成测试,验证项目是否满足质量标准。 | mvn verify |
mvn clean install | 清理项目并安装到本地仓库。 | mvn clean install |
mvn clean package | 清理项目并打包。 | mvn clean package |
mvn clean deploy | 清理项目并部署到远程仓库。 | mvn clean deploy |
mvn site | 生成项目相关信息的网站。 | mvn site |
mvn dependency:tree | 打印项目的依赖关系树。 | mvn dependency:tree |
mvn dependency:list | 列出项目的所有依赖。 | mvn dependency:list |
mvn dependency:copy-dependencies | 将项目的依赖复制到指定目录。 | mvn dependency:copy-dependencies -DoutputDirectory=libs |
mvn archetype:generate | 创建一个新的 Maven 项目。 | mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart |
mvn clean validate | 清理项目并验证项目的有效性。 | mvn clean validate |
mvn clean compile | 清理项目并编译源代码。 | mvn clean compile |
mvn clean test | 清理项目并运行单元测试。 | mvn clean test |
mvn clean package | 清理项目并打包。 | mvn clean package |
mvn clean install | 清理项目并安装到本地仓库。 | mvn clean install |
mvn clean deploy | 清理项目并部署到远程仓库。 | mvn clean deploy |
内联模块
直接在文件中用 mod module_name { ... }
定义。模块可以包含其他模块,形成层次结构,即模块可以嵌套模块。
文件模块
- 文件
src/my_module.rs
自动成为模块my_module
。 - 目录
src/my_module/
需包含mod.rs
文件作为入口。
使用模块
使用 use
关键字引入模块或其成员。
|
|
Crate:Rust 的包和构建单元
在 Rust 中,crate
是编译单元,可以是一个库或一个二进制可执行文件。每个 crate 都有一个根文件,通常是 src/main.rs
(对于二进制 crate)或 src/lib.rs
(对于库 crate)。
- 库 crate:如果项目包含
src/lib.rs
文件,则该项目是一个库 crate。 - 二进制 crate:如果项目包含
src/main.rs
文件,则该项目是一个二进制 crate。 - 多二进制 crate:如果项目的
src
目录下包含多个源文件,Cargo 会将它们视为多个二进制 crate。
Crate 根的具体规则
- 二进制 crate(生成可执行文件):
- crate 根是
src/main.rs
文件。 - 例如:当你运行
cargo new my_project
,默认生成的src/main.rs
就是这个 crate 的根。
- crate 根是
- 库 crate(生成
.rlib
库文件):- crate 根是
src/lib.rs
文件。 - 例如:当你运行
cargo new my_lib --lib
,生成的src/lib.rs
是根。
- crate 根是
包(Package)
包是一个包含一个或多个 crate 的集合。每个包都有一个 Cargo.toml
配置文件,定义了包的元数据和依赖关系。
(1)创建包:使用 cargo new
命令创建一个新包。
|
|
(2)包结构:包的目录结构通常如下:
|
|
(3)依赖管理:在 Cargo.toml
文件的 [dependencies]
部分添加依赖项。
|
|
文件名与模块名、包名之间的关系以及如何引入
一个文件就是一个模块,文件名即模块名(不含 .py
后缀)。
在Python 3.3之前版本,若目录中包含 __init__.py
文件,则就是一个包。__init__.py
的作用是标识该目录是一个包,而不是普通的目录。包可以包含多个模块(文件)和子包(子目录)。参见PEP 420: 隐式命名空间包
在Python 3.3及以上版本,即使目录中没有 __init__.py
文件,也可以将其作为包导入。这是因为 Python 现在支持 隐式命名空间包。但如果需要兼容旧版本 Python 或实现特殊逻辑,仍推荐显式地添加 __init__.py
文件。
定义模块
|
|
引入模块
|
|
对于__init__.py
文件中的内容有什么要求?
__init__.py
的内容是可选的,可以根据需求添加代码或保持为空。以下是常见用法:
(1)空文件
如果不需要任何初始化逻辑,
__init__.py
文件可以留空。示例:
1 2 3 4
mypackage/ __init__.py # 空文件 module1.py module2.py
(2)导入子模块
在
__init__.py
中导入子模块,以便可以直接通过包名访问子模块。示例:
1 2 3
# __init__.py from .module1 import func1 from .module2 import func2
使用:
1 2
import mypackage mypackage.func1()
(3)定义 __all__
指定当使用
from package import *
时导入的模块或符号。示例:
# __init__.py __all__ = ["module1", "module2"]
使用:
1
from mypackage import *
(4)设置包级别变量
定义一些全局变量或配置选项。
示例:
1 2
# __init__.py VERSION = "1.0.0"
使用:
import mypackage print(mypackage.VERSION)
(5)动态加载模块
使用
importlib
或其他动态加载技术动态导入模块。示例:
1 2 3 4
import importlib def load_module(name): return importlib.import_module(name)
main包、main函数
操作符和标点符号
Go语言比较特殊的操作符有:
&^
以及&^=
,按位清除,按位清除赋值++
和--
是语句,且只有后置++
、--
,而没有前置++
、--
:=
用于短变量声明<-
用在channel,目前有两种用法:1 用在函数参数、返回值类型;2 直接用在channel变量上,用于从接收channel变量的值,或者向channel发送指定值;...
目前有两种用法:1 用在函数、方法的声明上的最后一个参数,表示可以接受多个参数,在函数和方法体中可以通过这个参数获得一个完整切片;2 用在函数或方法调用上,用于向函数、方法传递实参,目前可以在切片和字符串类型的变量或字面量上使用。
详见 comm/Python/basic/operators
操作符
- 算术:
+
,-
,*
,/
,//
(整除),%
(取余),**
(幂运算) - 比较:
==
,!=
,<
,>
,<=
,>=
,is
(对象身份比较),is not
(对象身份比较),in
(成员判断),not in
(成员判断) - 逻辑:
and
,or
,not
- 位运算:
&
,|
,^
,~
,<<
,>>
- 赋值:
=
,+=
,-=
,*=
,/=
,//=
,%=
,**=
- 其他:
:=
(海象运算符,3.8+版本),@
(装饰器 / 矩阵乘法),->
(函数返回值注解).
标点符号
( )
(元组 / 函数调用),[ ]
(列表 / 索引),{ }
(字典 / 集合),:
(切片 / 代码块),,
(分隔符),.
(属性访问),#
(注释),"
/'
(字符串),\
(续行符),@
(装饰器).
|
|
Python语言比较特殊的操作符有:
and(逻辑与)Python中并没有
&&
,若使用&&
,会报SyntaxError
or(逻辑或)Python中并没有
||
,若使用||
,会报SyntaxError
not(逻辑非)Python中并没有
!
,若使用!
,会报SyntaxError
操作符
- 算术:
+
,-
,*
,/
,%
,++
(区分前置和后置形式),--
(区分前置和后置形式) - 比较:
==
,!=
,<
,>
,<=
,>=
,instanceof
(检查一个对象是否是某个类或接口的实例) - 逻辑:
&&
,||
,!
- 位运算:
&
,|
,^
(按位异或),~
(按位取反),<<
(带符号位左移,只用于整数类型),>>
(带符号位右移,只用于整数类型),>>>
(不带符号位右移,只用于整数类型) - 赋值:
=
,+=
,-=
,*=
,/=
,%=
,&=
,|=
,^=
,<<=
,>>=
,>>>=
- 三元:
? :
标点符号
{ }
(代码块),[ ]
(数组),( )
(方法参数),;
(语句结束),,
(分隔符),.
(对象成员访问),@
(注解),"
(字符串),'
(字符).
数据类型
数据类型
- 内置类型:
- 布尔型:
bool
,表示真或假。 - 数值型:
- 整数:
int
、int8
、int16
、int32
、int64
、uint
、uint8
(byte
别名)、uint16
、uint32
、uint64
、uintptr
。 - 浮点数:
float32
、float64
。 - 复数:
complex64
、complex128
。
- 整数:
- 字符串型:
string
,用于存储文本数据。
- 布尔型:
- 复合类型:
- 数组:
[n]T
,固定长度,n
为长度,T
为元素类型。 - 切片:
[]T
,长度可变,基于数组实现。 - 映射:
map[K]V
,键值对集合,K
为键类型,V
为值类型。 - 结构体:
struct
,用于组合不同类型的数据。 - 接口:
interface
,定义一组方法签名。
- 数组:
- 自定义类型:
- 使用
type
关键字,如type MyInt int
定义MyInt
为int
类型的别名;type Person struct { Name string; Age int }
定义一个结构体类型。
- 使用
|
|
- 内置类型:
- 布尔型:
bool
,True
或False
。 - 数值型:
- 整数:
int
,任意大小的整数。 - 浮点数:
float
,带小数点的数。 - 复数:
complex
,如3 + 4j
。
- 整数:
- 字符串型:
str
,用于存储文本,用单引号、双引号或三引号表示。 - 序列类型:
- 列表:
list
,有序可变元素集合,如[1, 2, "hello"]
。 - 元组:
tuple
,有序不可变元素集合,如(1, 2, "world")
。
- 列表:
- 集合类型:
- 集合:
set
,无序不重复元素集合,如{1, 2, 3}
。 - 冻结集合:
frozenset
,不可变的集合。
- 集合:
- 映射类型:
dict
,键值对集合,如{"name": "Alice", "age": 25}
。
- 布尔型:
- 自定义类型:
- 使用
class
关键字定义类,如class Person: def __init__(self, name, age): self.name = name; self.age = age
。
- 使用
|
|
- 内置类型(基本数据类型):
- 布尔型:
boolean
,值为true
或false
。 - 数值型:
- 整数:
byte
(8 位)、short
(16 位)、int
(32 位)、long
(64 位)。 - 浮点数:
float
(32 位)、double
(64 位)。 - 字符型:
char
,表示单个字符,用单引号括起来。
- 整数:
- 布尔型:
- 复合类型(引用类型):
- 类:
class
,用于封装数据和行为。 - 接口:
interface
,定义一组方法签名。 - 数组:
type[]
,如int[] numbers = new int[5];
。 - 枚举:
enum
,自 Java 5 引入,用于定义一组常量。
- 类:
- 自定义类型:
- 使用
class
关键字定义类,如class Person { String name; int age; }
;使用interface
关键字定义接口;使用enum
关键字定义枚举类型。
- 使用
|
|
- 内置类型:
- 布尔型:
bool
,true
或false
。 - 数值型:
- 整数:
i8
、i16
、i32
、i64
、i128
、isize
、u8
、u16
、u32
、u64
、u128
、usize
。 - 浮点数:
f32
、f64
。 - 字符型:
char
,表示单个 Unicode 字符。
- 整数:
- 字符串类型:
str
(字符串切片),不可变借用字符串。String
,可变字符串。
- 布尔型:
- 复合类型:
- 元组:
(type1, type2,...)
,固定长度,元素类型可以不同。 - 数组:
[T; n]
,固定长度,T
为元素类型,n
为长度。 - 结构体:
struct
,用于组合不同类型的数据。 - 枚举:
enum
,用于定义多种可能的类型。 - 联合体:
union
(不稳定特性)。
- 元组:
- 自定义类型:
- 使用
type
关键字定义类型别名,如type MyInt = i32;
;使用struct
关键字定义结构体,如struct Person { name: String, age: u32 }
;使用enum
关键字定义枚举,如enum Color { Red, Green, Blue }
。
- 使用
|
|
C 语言:
- 内置类型:
- 布尔型:
_Bool
(C99 引入,通常用stdbool.h
头文件中的bool
宏,值为true
或false
)。 - 数值型:
- 整数:
char
、short
、int
、long
、long long
(C99 引入),每种又分signed
和unsigned
。 - 浮点数:
float
、double
、long double
。
- 整数:
- 空类型:
void
,表示无类型。
- 布尔型:
- 复合类型:
- 数组:
type array_name[size];
,固定长度。 - 结构体:
struct
,用于组合不同类型的数据。 - 联合体:
union
,用于共享内存空间。 - 指针:
type *pointer_name;
,存储变量地址。
- 数组:
- 自定义类型:
- 使用
typedef
关键字定义类型别名,如typedef int MyInt;
;使用struct
关键字定义结构体,如struct Person { char name[20]; int age; };
。
- 使用
- 内置类型:
C++ 语言:
- 内置类型:在 C 语言基础上,布尔型为
bool
,值为true
或false
。 - 复合类型:
- 数组:
type array_name[size];
,固定长度,C++11 引入std::array
更安全易用。 - 结构体:
struct
,与 C 类似,但更面向对象。 - 类:
class
,用于封装数据和行为,是 C++ 面向对象的核心。 - 联合体:
union
,与 C 类似。 - 指针:
type *pointer_name;
,存储变量地址,C++11 引入智能指针std::unique_ptr
、std::shared_ptr
、std::weak_ptr
等。 - 引用:
type &reference_name = variable;
,为变量的别名。 - 枚举:
enum
,可以定义强类型枚举enum class
(C++11 引入)。
- 数组:
- 自定义类型:
- 使用
typedef
关键字定义类型别名;使用class
关键字定义类,如class Person { public: string name; int age; };
;使用struct
关键字定义结构体;使用enum
或enum class
定义枚举类型。
- 使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
#include <iostream> #include <string> #include <vector> using namespace std; int main() { // 内置类型(基本类型) bool b = true; // 布尔型 int i = 10; // 整型 float f = 3.14f; // 单精度浮点型 double d = 3.14159; // 双精度浮点型 char c = 'a'; // 字符型 string s = "hello"; // 字符串 cout << b << " " << i << " " << f << " " << d << " " << c << " " << s << endl; // 1 10 3.14 3.14159 a hello // 复合类型(派生类型) int arr[] = {1, 2, 3}; // 数组 int* ptr = &i; // 指针 struct MyStruct { // 结构体 string name; int age; }; MyStruct myStruct = {"Alice", 30}; enum MyEnum { // 枚举 A, B, C }; MyEnum myEnum = MyEnum::A; vector<int> vec = {1, 2, 3}; // 动态数组(vector) cout << arr[0] << " " << *ptr << " " << myStruct.name << " " << myEnum << " "; // 1 10 Alice 0 for (int val : vec) { cout << val << " "; // 1 2 3 } cout << endl; // 自定义类型 class MyClass { // 类 public: int value; }; MyClass myObj; myObj.value = 100; cout << myObj.value << endl; // 100 return 0; }
- 内置类型:在 C 语言基础上,布尔型为
- 内置类型:
- 原始类型:
- 布尔型:
boolean
,true
或false
。 - 数值型:
number
,表示整数和浮点数。 - 字符串型:
string
,用于存储文本。 - 空值:
null
,表示空对象指针。 - 未定义:
undefined
,表示变量未赋值。 - 符号:
symbol
(ES6 引入),用于创建唯一标识符。
- 布尔型:
- 对象类型:
object
,用于存储键值对集合,如{ name: "Alice", age: 25 }
。
- 原始类型:
- 自定义类型:
- 使用构造函数、类(ES6 引入
class
语法糖,本质还是构造函数)等方式创建自定义对象,如class Person { constructor(name, age) { this.name = name; this.age = age; } }
。
- 使用构造函数、类(ES6 引入
|
|
- 内置类型:
- 与 JavaScript 原始类型类似:
boolean
、number
、string
、null
、undefined
、symbol
。 - 新增:
- 任意类型:
any
,可以是任何类型。 - 未知类型:
unknown
,与any
类似但更安全。 - 空类型:
void
,表示函数没有返回值。 - never 类型:
never
,表示从不会出现的值。
- 任意类型:
- 数组类型:
type[]
或Array<type>
,如number[]
或Array<number>
。 - 元组类型:
[type1, type2,...]
,固定长度,元素类型固定。
- 与 JavaScript 原始类型类似:
- 自定义类型:
- 使用
type
关键字定义类型别名,如type MyNumber = number;
;使用interface
关键字定义接口,如interface Person { name: string; age: number; }
;使用class
关键字定义类,如class Person { constructor(public name: string, public age: number) {} }
。
- 使用
|
|
- 内置类型(值类型):
- 布尔型:
bool
,true
或false
。 - 数值型:
- 整数:
sbyte
、byte
、short
、ushort
、int
、uint
、long
、ulong
。 - 浮点数:
float
、double
、decimal
。 - 字符型:
char
,表示单个 Unicode 字符。
- 整数:
- 枚举类型:
enum
,用于定义一组命名常量。 - 结构体类型:
struct
,轻量级对象,值类型。
- 布尔型:
- 内置类型(引用类型):
- 对象类型:
object
,所有类型的基类。 - 字符串类型:
string
,用于存储文本。 - 数组类型:
type[]
,如int[] numbers = new int[5];
。 - 类:
class
,用于封装数据和行为。 - 接口:
interface
,定义一组方法签名。 - 委托:
delegate
,用于实现回调函数。 - 事件:基于委托,用于对象间的通信。
- 对象类型:
- 自定义类型:
- 使用
class
关键字定义类,如class Person { public string name; public int age; }
;使用struct
关键字定义结构体;使用interface
关键字定义接口;使用enum
关键字定义枚举类型;使用delegate
关键字定义委托类型。
- 使用
|
|
- 内置类型:
- 布尔型:
true
、false
。 - 数值型:
- 整数:任意精度整数。
- 浮点数:
float
。
- 原子:
atom
,常量,以小写字母开头或用单引号括起来,如ok
、'MyAtom'
。 - 字符串:实际上是整数列表,如
[97, 98, 99]
表示"abc"
。 - 列表:
[element1, element2,...]
,元素类型可以不同。 - 元组:
{element1, element2,...}
,固定长度,元素类型可以不同。
- 布尔型:
- 自定义类型:
- 使用
record
语法定义记录类型,如-record(person, {name, age}).
,使用时#person{name = "Alice", age = 25}
。
- 使用
|
|
- 内置类型:
- 布尔型:
bool
,true
或false
。 - 数值型:
- 整数:
int
,表示整数。 - 浮点数:
float
(double
别名),表示浮点数。
- 整数:
- 字符串型:
string
,用于存储文本。 - 数组:
array
,可以是索引数组、关联数组等多种形式,如$arr = [1, 2, 3];
或$assocArr = ["name" => "Alice", "age" => 25];
。 - 对象:
object
,使用class
定义的类的实例。 - 资源:
resource
,用于表示外部资源,如数据库连接等。 - 空值:
null
,表示变量没有值。
- 布尔型:
- 自定义类型:
- 使用
class
关键字定义类,如class Person { public $name; public $age; }
。
- 使用
|
|
- 内置类型:
- 布尔型:
true
、false
。 - 数值型:
- 整数:
Fixnum
(小整数,范围有限)、Bignum
(大整数,任意精度),在 Ruby 2.4 后统一为Integer
。 - 浮点数:
Float
。
- 整数:
- 字符串型:
String
,用于存储文本。 - 数组:
Array
,有序元素集合,元素类型可以不同,如[1, "hello", true]
。 - 哈希:
Hash
,键值对集合,如{name: "Alice", age: 25}
。 - 范围:
Range
,表示一个范围,如1..10
。 - 符号:
Symbol
,不可变的字符串 - like 对象,用于标识符等,如:name
。 - 正则表达式:
Regexp
,用于模式匹配。 - proc 和 lambda:
Proc
、lambda
,用于创建可调用的代码块。
- 布尔型:
- 自定义类型:
- 使用
class
关键字定义类,如class Person attr_accessor :name, :age def initialize(name, age) @name = name @age = age end end
。
- 使用
|
|