📜  Julia 中的函数

📅  最后修改于: 2021-11-25 04:41:08             🧑  作者: Mango

Julia 中的函数是一个对象,它接受一组参数并将其映射到返回值。一个函数可以是纯数学的,也可以改变程序中另一个对象的状态。
使用 Julia 的函数,我们可以编写更大的计算,但只需很少的代码行,因为函数支持一些全面的符号。在 Julia 中创建和使用函数非常简单。

定义函数

根据需要,Julia 中的函数可以是多种类型。下面列出了其中一些类型:

  • 具有单一表达式的函数
  • 具有多个表达式的函数
  • 不带参数的函数
  • 具有可变参数等的函数。

定义一个函数就像调用一个函数一样简单,只需编写预定义的关键字function并提供一个 function_name。一个函数可以用一个单独的表达式来分配,也可以用多个表达式或没有表达式。不需要为某些函数提供表达式来执行操作。对于前数学加法运算符(+):它可以只用参数调用,该函数将作为这些参数的加法返回输出。

例子:

# Defining a function
function fn()
    println("this is a function")
end
  
# Function call
fn()

输出:

this is a function

带参数的函数

也可以通过传递参数元组来创建带参数的函数。定义这样的函数也如上,但稍作修改。此外,函数可以指定一些其他名称,或者我们可以说函数从一个名称复制到另一个名称。

# Defining a function with arguments
function add_fn(x, y)
    println(x + y)
end
  
# Assigning another name to function
another_add = add_fn
  
# Calling defined function
add_fn(7, 8)
  
# Calling function by new name
another_add(6, 7)

输出:

15
13

定义函数的简写

也可以使用“=” (赋值运算符)定义单行函数。使用这种符号很有用,因为它可以节省时间和源代码行数。

# Defining a shorthand function
add_fn(x, y) = println(x + y)
  
# Function call
add_fn(7, 8)

输出:

15

在函数使用 Return

有时我们希望我们的函数返回一些可以进一步用于某些计算的值。为了从函数返回值,使用return关键字。这将从函数被调用,其中返回的计算值按在函数中定义的指令,该声明。 return语句也可以使用return语句后只是写整个操作计算函数的操作。通过不编写要计算的语句然后返回计算值,这将导致更少的代码行。

# Defining a function
function add_fn(x, y)
  
    # Defining return statement
    return x + y
end
  
# Function call
z = add_fn(1, 9)
println(z)

输出:

10

上面的代码将 ‘x’ 和 ‘y’ 的值作为参数,然后在添加 ‘x’ 和 ‘y’ 后返回它们,并将返回的结果存储在调用函数的另一个变量 ‘z’ 中。

例子:

# Defining a function
function fn(x, y)
  
    # Return statement
    return x * y
    println("This is not executed")
end
  
# Function call
out = fn(7, 7)
  
println(out)

输出:

49

和上面的代码一样,输出只是返回的内容,不执行返回后的语句。

跳过返回语句

如果我们只使用一个语句 inside out函数,则不需要使用return关键字。这是因为 Julia 会自动返回函数最后处理的语句的输出。

# Defining function
function f(x, y)
    x * x
end
function g()
    println("printed data is returned")
end
  
# Function call
out1 = f(5, 5)
out2 = g()
  
println(out1)
println(out2)

输出:

25
printed data is returned

使用运算符作为函数

在 Julia 中,运算符也可以用作函数。 +、-、* 等运算符是函数。由于运算符可以为职能的工作,我们可以别名(给别称)给运算符。

例子:

# Performing addition operation directly
a = 50 + 20 + 1
println(a)
  
# '+' working as function
b = +(50, 20, 1)
println(b)
  
# aliasing operator as function
f = +;
println(f(50, 20, 1))

输出:

71
71
71

匿名函数

有时不需要考虑函数的名称。 Julia 也允许创建没有名称的函数。现在,出现了一个问题,如何调用这些函数或如何将参数传递给这些函数。 Julia 提供了一个关键字ans ,它自动引用最后计算出的值。此关键字可用于将参数传递给匿名函数。

例子:

# Creating an anonymous function
function (x)
           x^2 + 2x - 1
       end
  
# Passing argument to function
ans(5)

输出:
Julia-Function-Output-01