探索Julia(part10)--自定义函数
学习笔记,仅供参考,有错必纠
参考自:Julia数据科学应用–Zacharias Voulgaris;官方文档
使用Julia-1.1.1
自定义函数
Functions
在Julia中,函数是将参数值的元组映射到返回值的对象。Julia函数不是纯粹的数学函数,因为函数可以改变程序的全局状态,并受其影响,在Julia中定义函数的基本语法是:
function f(x,y)x + y
end
在Julia中还有第二种更简洁的定义函数的语法。上面演示的传统函数声明语法等价于以下紧凑的"赋值形式":
f(x,y) = x + y
在赋值形式中,函数体必须是单个表达式,尽管它可以是复合表达式(参见复合表达式)。简短、简单的函数定义在Julia中很常见。
函数调用使用传统的括号语法:
f(2,3)
#返回值
5
函数名后不加括号,则表达式f指的是函数对象,可以像任何值一样传递:
g = f;
g(1, 2)
#返回值
3
和变量一样,Unicode也可以用于函数名:
∑(x,y) = x + y;
∑(1, 2)
#返回值
3
return关键字
默认情况下,函数返回的值是最后一个计算表达式的值,该表达式是函数定义体中的最后一个表达式,return关键字将导致函数立即返回,例如:
function g2(x,y)return x * yx + y
end;
调用:
g2(5, 6)
#返回值
30
返回值类型
可以在函数声明中使用::
操作符指定返回值类型,这将返回值转换为指定的类型:
function g3(x, y)::Int8return x * y
end;
查看返回值类型:
typeof(g3(3, 4))
#返回值
Int8
对于不需要返回值的函数(仅用于某些副作用的函数),Julia约定是不返回值:
function printx(x)println("x = $x")return nothing
end
这是一种约定,因为nothing不是一个Julia关键字,而是唯一的nothing类型的单例对象。
Operators Are Functions
在Julia中,大多数操作符是支持特殊语法的函数(具有特殊求值语义的操作符,如&&
和||
例外,这些运算符则不能为函数),我们可以应用他们使用圆括号参数列表,就像其他任何函数一样:
julia> 1 + 2 + 3
6julia> +(1,2,3)
6
中缀形式(infix form)与函数应用程序形式(function application form)完全相同,实际上,前者被解析为在内部生成函数调用,这也意味着我们可以分配和传递操作符,比如+
和*
,就像你对待其他函数值一样:
julia> f1 = +;julia> f1(1,2,3)
6
具有特殊名称的操作符
一些特殊表达式对应于调用具有不明显名称的函数,这些是:
Expression | Calls |
---|---|
[A B C ...]
|
hcat |
[A; B; C; ...]
|
vcat |
[A B; C D; ...]
|
hvcat |
A'
|
adjoint |
A[i]
|
getindex |
A[i] = x
|
setindex! |
A.n
|
getproperty |
A.n = x
|
setproperty! |
匿名函数
Julia中的函数是一类对象:它们可以被赋给变量,并使用标准的函数调用语法从已赋值的变量中调用。它们可以用作参数,也可以作为值返回。它们也可以匿名创建,无需给出名称,例如:
julia> x -> x^2 + 2x - 1
#3 (generic function with 1 method)
Julia创建了一个函数,参数为x,返回多项式x^2 + 2x - 1在该值处的值。请注意,该函数返回结果是一个泛型函数,且具有基于连续编号的编译器生成的名称。
匿名函数的主要用途是将它们传递给其他函数,作为一个参数。一个典型的例子是map方法,它对数组中的每个值应用一个函数,并返回一个包含结果值的新数组:
julia> map(x -> x^2 + 2x - 1, [1,3,-1])
3-element Array{Int64,1}:214-2
接受多个参数的匿名函数,可以被写为:
(x, y, z) -> 2x + y - z
一个零参数匿名函数被写为:
()->3
不带参数的函数可能看起来很奇怪,但对于“延迟”计算很有用。
探索Julia(part10)--自定义函数相关推荐
- 探索Julia(part11)--自定义函数
学习笔记,仅供参考,有错必纠 参考自:Julia数据科学应用–Zacharias Voulgaris:官方文档 使用Julia-1.1.1 自定义函数 元祖 Julia有一个称为元组的内置数据结构,它 ...
- SAP资产负债表实现方案探索 - 基于 VBA 自定义函数方法
本篇接着SAP资产负债表实现方案探索 - 基于 Excel-DNA 自定义函数方法 这篇博文,继续介绍通过 VBA 编写自定义函数来实现资产负债表的方法.在上一篇文章中,整体解决方案的思路可以分为两个 ...
- SAP资产负债表实现方案探索 - 基于 Excel-DNA 自定义函数方法
早前曾基于 VBA 的 RFC 的方式从 SAP 获取数据,在 Excel 中自定义函数实现资产负债表,也把实现的过程在博文中进行了介绍:SAP接口编程之综合实例(一):资产负债表方案. 完成之后,对 ...
- 探索Julia(part1)--Julia初识
学习笔记,仅供参考,有错必纠 参考自:Julia数据科学应用–Zacharias Voulgaris 前言: 由于数据的快速增长,数据科学必须利用各种工具的强大功能来应对大数据的挑战.因为数据科学的一 ...
- 探索Julia(part12)--函数组合及管道
学习笔记,仅供参考,有错必纠 参考自:Julia数据科学应用–Zacharias Voulgaris:官方文档 使用Julia-1.1.1 函数组合及管道 函数组合 Julia中的函数可以通过组合或连 ...
- sql 自定义函数 示例_SQL Server SESSION_CONTEXT()函数与示例
sql 自定义函数 示例 This article explores the SQL Server session context function, SESSION_CONTEXT() and pe ...
- 自定义函数使用GridSearchCV参数寻优
自定义函数使用GridSearchCV参数寻优 GirdSearchCV and RandomizedSearchCV 自定义函数中使用GirdSearchCV GridSearchCV参数说明 Gr ...
- sql 自定义函数 示例_SQL Server Choose()函数介绍和示例
sql 自定义函数 示例 In the article, a CASE statement in SQL, we explored one of the important logical expre ...
- 2021年大数据Hive(八):Hive自定义函数
全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...
最新文章
- 利用人工智能进行网页设计的10种方法
- kendoui固定宽度_KendoUi 学习笔记(二) Grid
- Qt4_使用QXmlStreamReader读取XML
- centos7系统使用杀毒软件clamav
- 计算机注册dll,电脑中注册dll文件和ocx文件的方法与操作步骤
- python 获得时间戳_Python 获取时间戳
- sqlite3返回码
- 手把手搭个vue的脚手架 - 2. 模板搭建
- 从代数结构上理解数集的分类
- 使用electron把vue项目打包成windows应用exe程序
- Ansible自动化运维工具安装及使用
- 宝宝为什么不吃奶粉,奶爸必读文章
- 通达信资金净流入公式_资金净流入选股公式源码-通达信公式 -程序化交易(CXH99.COM)...
- 闲聊调度系统 Apache Airflow
- 两张(多张)图片合成一张图片
- 高一末计算机考试试题,高一计算机第一学期期末试题
- java第九章第一题_Java第九章第五题
- go mod拉取gitlab私有仓库代码问题最全总结
- 高新技术企业认定申请通过后补贴
- hadoop连接mysql_Hadoop 连接mysql
热门文章
- C++自定义高斯滤波器
- mysql 算子 谓词_[SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式
- python自动写作软件_有哪些适合长文的轻量级写作软件值得推荐?
- Eclipse中Build Path的使用介绍---学习笔记
- 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串 1
- centos内核编译与其签名机制
- 源码编译依赖关系一例小结
- Java等线程池执行完所有任务后再执行主线程
- Maven依赖Scope标签用法
- Xcode的SVN提示The request timed out.的解决方案