avatar
Articles
175
Tags
36
Categories
25
Home
Tags
Categories
About
Archives
Share
FenglielieJulia 学习笔记——5. 类型系统 Back to Home
Search
Home
Tags
Categories
About
Archives
Share

Julia 学习笔记——5. 类型系统

Created2025-04-15|Updated2025-10-25|langjulia
|Word Count:0|Reading Time:1mins
Author: Fenglielie
Link: https://fenglielie.top/p/5a22fe22/
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Julia
cover of previous post
Previous
Julia 学习笔记——6. 函数进阶和宏
函数的参数类型 Julia 允许给函数的(一部分或全部)参数加上类型约束,例如 123function add2(x::Int64, y::Int64) return x + yend 正常使用例如 12add2(1, 3) # 4add2(Int64(1), Int64(10)) # 11 注意 Julia 不会对参数进行自动的类型转换,即使转换是安全无损的,例如 1add2(Int32(1), Int32(2)) # error 使用过于具体的参数类型约束通常不是合适的选择,可以使用更抽象的类型约束,例如使用一般的整数类型 123function add3(x::Integer, y::Integer) return x + yend 此时可以支持更多种类的参数进行调用,例如 12add3(Int32(1), Int32(10)) # 11add3(Int32(1), 10) # 11 注意到这里允许两个参数是不同的整数类型,Julia 提供了 where 关键字为泛型编程增加额外约束(类似 C++ 的 concepts 和 requires),例如要求两个参数的...
cover of next post
Next
Julia 学习笔记——4. 函数基础
Julia 的函数与 Python 很类似,最大的区别可能就是关键字 def 换成 function,除此以外都是一些细节差异。 基础 简单例子 最基本的例子如下 12345function f(x,y) x + yendf(1,2) # 3 和 Python 一样,Julia 的函数不需要额外的类似函数句柄的机制,函数对象可以和普通的值一样被传递。 12345function f(x,y) x + y;endg = f; g(1,2) # 3 函数的赋值形式 Julia 支持以单行的赋值形式定义函数 1f(x, y) = x + y; 此时的函数体只能是一个单行表达式,这个表达式的结果自然就是函数的返回值。由于函数分派机制的存在,这种简单函数在 Julia 中实际上很常见。 return 语句 Julia 可以使用 return 语句返回值,但是和 Python 不同的是,Julia 在不使用 return 语句时,自动将最后一个表达式的结果作为函数返回值。为了代码可读性,还是不建议省略 return。 例如 12345678function update(x) ...
Related Articles
cover
2025-04-13
Julia 学习笔记——1. 概述
尝试学一下 Julia,但是这份笔记的时间跨度可能很长,有空就写一点吧。 需要说明的是,这个系列不是零基础的 Julia 笔记,而是直接从 Python 和 MATLAB 到 Julia 的迁移学习。 介绍 Julia是一门新兴的科学计算语言,它的设计目标非常宏大:希望 Julia 可以同时拥有 Python/MATLAB 一样的易用性和 C/C++/Fortran 一样的运算效率。 Julia有很多与众不同的特点: 从设计定位来说,Julia 具有后发优势,是为 JIT 编译而量身定制的语言,目的是解决现在泾渭分明的动态语言和静态语言之间,优劣不能兼顾,因而必须组合使用的问题。 从计算效率的角度,虽然和Python在使用时很相似,但是Julia的计算效率却比Python高很多。Python的科学计算模块Numpy等必须依赖于C/C++编写的底层库,但是Julia自身就可以提供足够的科学计算能力(主要是通过预编译实现的)。 从语法设计的角度,Python并没有关注于科学计算编程中的便利性,Julia和MATLAB、Fortran、R语言的定位类似,充分为科学计算的效率和便利性考...
cover
2025-04-14
Julia 学习笔记——2. 数值系统、运算符与输出输出基础
现在关注 Julia 的一些独特语法和特性,会省略与 MATLAB 或 Python 相似的语法特性。 数值系统 整数 Julia 支持固定长度的整数类型,包括有符号和无符号的版本,例如 Int8,Int32,UInt32 等。对于十进制整数字面量,在64位系统中默认使用 Int64 类型整数。可以使用 typeof 查看字面量的类型 1typeof(1) # Int64 类型也是可以作为参数进行运算的,例如使用 typemin 和 typemax 直接查看类型的最大最小值 123typemin(Int32) # -2147483648typemin(Int64) # -9223372036854775808typemax(Int64) # 9223372036854775807 注: Julia 支持使用 _ 作为数字的分隔符,可以提高可读性,例如10_000。 由于整数的位数是固定的,在运算中自然也存在溢出问题,与其它语言中的处理类似,不再赘述。 Python 的整数是无限精度的,Julia 也提供了 BigInt 类型以支持无限精度。 对于非十进制的整数字面量,Juli...
cover
2025-04-14
Julia 学习笔记——3. 流程控制
简单过一遍 Julia 中的流程控制。 条件语句 if 条件语句和其它语言一样,注意其中的条件表达式不需要括号 123456789101112x = 3;y = 2;if x < y println("x is less than y")elseif x > y println("x is greater than y")else println("x is equal to y")end# x is greater than y C/C++ 使用 else if;Python 使用 elif;MATLAB 使用 elseif,Julia 也使用 elseif。 需要注意的是,Julia 要求 if 和 elseif 所接受的条件必须是 Bool 值,不接受隐式转换,例如下面的语句是错误的 123if 1 # error println("1 is true")end 还需要说明的是:和 Python 一样,Julia 在 if 语句中不会开辟独立的局部作...
cover
2025-04-15
Julia 学习笔记——4. 函数基础
Julia 的函数与 Python 很类似,最大的区别可能就是关键字 def 换成 function,除此以外都是一些细节差异。 基础 简单例子 最基本的例子如下 12345function f(x,y) x + yendf(1,2) # 3 和 Python 一样,Julia 的函数不需要额外的类似函数句柄的机制,函数对象可以和普通的值一样被传递。 12345function f(x,y) x + y;endg = f; g(1,2) # 3 函数的赋值形式 Julia 支持以单行的赋值形式定义函数 1f(x, y) = x + y; 此时的函数体只能是一个单行表达式,这个表达式的结果自然就是函数的返回值。由于函数分派机制的存在,这种简单函数在 Julia 中实际上很常见。 return 语句 Julia 可以使用 return 语句返回值,但是和 Python 不同的是,Julia 在不使用 return 语句时,自动将最后一个表达式的结果作为函数返回值。为了代码可读性,还是不建议省略 return。 例如 12345678function update(x) ...
cover
2025-04-15
Julia 学习笔记——6. 函数进阶和宏
函数的参数类型 Julia 允许给函数的(一部分或全部)参数加上类型约束,例如 123function add2(x::Int64, y::Int64) return x + yend 正常使用例如 12add2(1, 3) # 4add2(Int64(1), Int64(10)) # 11 注意 Julia 不会对参数进行自动的类型转换,即使转换是安全无损的,例如 1add2(Int32(1), Int32(2)) # error 使用过于具体的参数类型约束通常不是合适的选择,可以使用更抽象的类型约束,例如使用一般的整数类型 123function add3(x::Integer, y::Integer) return x + yend 此时可以支持更多种类的参数进行调用,例如 12add3(Int32(1), Int32(10)) # 11add3(Int32(1), 10) # 11 注意到这里允许两个参数是不同的整数类型,Julia 提供了 where 关键字为泛型编程增加额外约束(类似 C++ 的 concepts 和 requires),例如要求两个参数的...
cover
2025-04-18
Julia 学习笔记——7. 多维数组
概述 TODO 创建数组 数组字面量 特殊数组 向量化函数的点语法 TODO
avatar
Fenglielie
Writing is thinking.
Articles
175
Tags
36
Categories
25
Post Series
Julia 学习笔记——1. 概述
Julia 学习笔记——1. 概述2025-04-13
Julia 学习笔记——2. 数值系统、运算符与输出输出基础
Julia 学习笔记——2. 数值系统、运算符与输出输出基础2025-04-14
Julia 学习笔记——3. 流程控制
Julia 学习笔记——3. 流程控制2025-04-14
Julia 学习笔记——4. 函数基础
Julia 学习笔记——4. 函数基础2025-04-15
Julia 学习笔记——5. 类型系统
Julia 学习笔记——5. 类型系统2025-04-15
Julia 学习笔记——6. 函数进阶和宏
Julia 学习笔记——6. 函数进阶和宏2025-04-15
Julia 学习笔记——7. 多维数组
Julia 学习笔记——7. 多维数组2025-04-18
Julia 学习笔记——8. 模块与包
Julia 学习笔记——8. 模块与包2025-04-20
© 2022 - 2025 By Fenglielie
皖ICP备2023005611号-1
Search
Loading Database