学习笔记,仅供参考,有错必纠

参考自: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)--自定义函数相关推荐

  1. 探索Julia(part11)--自定义函数

    学习笔记,仅供参考,有错必纠 参考自:Julia数据科学应用–Zacharias Voulgaris:官方文档 使用Julia-1.1.1 自定义函数 元祖 Julia有一个称为元组的内置数据结构,它 ...

  2. SAP资产负债表实现方案探索 - 基于 VBA 自定义函数方法

    本篇接着SAP资产负债表实现方案探索 - 基于 Excel-DNA 自定义函数方法 这篇博文,继续介绍通过 VBA 编写自定义函数来实现资产负债表的方法.在上一篇文章中,整体解决方案的思路可以分为两个 ...

  3. SAP资产负债表实现方案探索 - 基于 Excel-DNA 自定义函数方法

    早前曾基于 VBA 的 RFC 的方式从 SAP 获取数据,在 Excel 中自定义函数实现资产负债表,也把实现的过程在博文中进行了介绍:SAP接口编程之综合实例(一):资产负债表方案. 完成之后,对 ...

  4. 探索Julia(part1)--Julia初识

    学习笔记,仅供参考,有错必纠 参考自:Julia数据科学应用–Zacharias Voulgaris 前言: 由于数据的快速增长,数据科学必须利用各种工具的强大功能来应对大数据的挑战.因为数据科学的一 ...

  5. 探索Julia(part12)--函数组合及管道

    学习笔记,仅供参考,有错必纠 参考自:Julia数据科学应用–Zacharias Voulgaris:官方文档 使用Julia-1.1.1 函数组合及管道 函数组合 Julia中的函数可以通过组合或连 ...

  6. sql 自定义函数 示例_SQL Server SESSION_CONTEXT()函数与示例

    sql 自定义函数 示例 This article explores the SQL Server session context function, SESSION_CONTEXT() and pe ...

  7. 自定义函数使用GridSearchCV参数寻优

    自定义函数使用GridSearchCV参数寻优 GirdSearchCV and RandomizedSearchCV 自定义函数中使用GirdSearchCV GridSearchCV参数说明 Gr ...

  8. sql 自定义函数 示例_SQL Server Choose()函数介绍和示例

    sql 自定义函数 示例 In the article, a CASE statement in SQL, we explored one of the important logical expre ...

  9. 2021年大数据Hive(八):Hive自定义函数

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive自定义函数 一.概述 1.UDF(User-Define ...

最新文章

  1. 利用人工智能进行网页设计的10种方法
  2. kendoui固定宽度_KendoUi 学习笔记(二) Grid
  3. Qt4_使用QXmlStreamReader读取XML
  4. centos7系统使用杀毒软件clamav
  5. 计算机注册dll,电脑中注册dll文件和ocx文件的方法与操作步骤
  6. python 获得时间戳_Python 获取时间戳
  7. sqlite3返回码
  8. 手把手搭个vue的脚手架 - 2. 模板搭建
  9. 从代数结构上理解数集的分类
  10. 使用electron把vue项目打包成windows应用exe程序
  11. Ansible自动化运维工具安装及使用
  12. 宝宝为什么不吃奶粉,奶爸必读文章
  13. 通达信资金净流入公式_资金净流入选股公式源码-通达信公式 -程序化交易(CXH99.COM)...
  14. 闲聊调度系统 Apache Airflow
  15. 两张(多张)图片合成一张图片
  16. 高一末计算机考试试题,高一计算机第一学期期末试题
  17. java第九章第一题_Java第九章第五题
  18. go mod拉取gitlab私有仓库代码问题最全总结
  19. 高新技术企业认定申请通过后补贴
  20. hadoop连接mysql_Hadoop 连接mysql

热门文章

  1. C++自定义高斯滤波器
  2. mysql 算子 谓词_[SQL] SQL 基础知识梳理(六)- 函数、谓词、CASE 表达式
  3. python自动写作软件_有哪些适合长文的轻量级写作软件值得推荐?
  4. Eclipse中Build Path的使用介绍---学习笔记
  5. 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串 1
  6. centos内核编译与其签名机制
  7. 源码编译依赖关系一例小结
  8. Java等线程池执行完所有任务后再执行主线程
  9. Maven依赖Scope标签用法
  10. Xcode的SVN提示The request timed out.的解决方案