📜  Lambda函数– 红宝石

📅  最后修改于: 2022-05-13 01:55:23.915000             🧑  作者: Mango

Lambda函数– 红宝石

在计算机编程中,Lambda 函数是匿名函数。 Ruby 中的 Lambda 函数也不例外。由于 Ruby 中的所有内容都被视为对象,因此 lambda 也是 Ruby 中的对象。 Ruby 中的 Lambda 允许我们将数据和逻辑包装在一个可移植的包中。

在 Ruby 中创建 Lambda函数的语法

lambda = lambda {}  

或者,我们也可以使用字面量lambda。

lambda = ->() {}  

Lambda函数是 Ruby 的 Proc 类的一个实例。

# Creating a lambda function
my_lambda_function = lambda { puts " GeeksforGeeks " }

# Getting class of lambda
my_lambda_function.class

执行时:

Proc

在 Ruby 中使用 Lambda

让我们定义一个 lambda函数

my_lambda_function = lambda { puts "Hello, Geeks !" }

我们有不同的方式来调用这个函数。我们可以使用my_lambda.callmy_lambda.()my_lambda.[]my_lambda.===来调用 lambda函数。
例子 :

Ruby
# Creating a lambda function
my_lambda_function = lambda { puts "Hello, Geeks" }
 
 
# Different ways to call a lambda function
my_lambda_function.call
 
my_lambda_function.()
 
my_lambda_function.[]
 
my_lambda_function.===


Ruby
# Creating lambda function with arguments
# Using literal lambda function
 
lambda_with_args = -> (s) { puts "Hello "+ s }
 
# Calling lambda function by passing arguments
lambda_with_args.call("Geeks")


Ruby
# Lambda function to add 10
add_10 = lambda { |num| num + 10 }
 
# Lambda function to multiply with 2
multiply_2 = lambda { |num| num * 2 }
 
# A Function using lambda
def using_lambda_with_functions(lambda, number)
 
  puts lambda.call(number)
 
end
 
 
# Passing lambda to function
using_lambda_with_functions(add_10, 10)
 
using_lambda_with_functions(multiply_2, 20)


输出

Hello, Geeks
Hello, Geeks
Hello, Geeks
Hello, Geeks

要在 lambda函数中传递参数,我们可以使用普通 lambda 语法或使用字面量lambda运算符“->”
示例 1:

# Creating lambda function with arguments 
# Using lambda keyword

lambda_with_args = lambda {| s | puts "Hello "+ s }

# Calling lambda function by passing arguments
lambda_with_args.call("Geeks")

输出:

Hello Geeks

示例 2:

红宝石

# Creating lambda function with arguments
# Using literal lambda function
 
lambda_with_args = -> (s) { puts "Hello "+ s }
 
# Calling lambda function by passing arguments
lambda_with_args.call("Geeks")

输出:

Hello Geeks

要将 lambda 函数与普通函数一起使用,我们可以将 lambda函数作为参数传递。
例子:

红宝石

# Lambda function to add 10
add_10 = lambda { |num| num + 10 }
 
# Lambda function to multiply with 2
multiply_2 = lambda { |num| num * 2 }
 
# A Function using lambda
def using_lambda_with_functions(lambda, number)
 
  puts lambda.call(number)
 
end
 
 
# Passing lambda to function
using_lambda_with_functions(add_10, 10)
 
using_lambda_with_functions(multiply_2, 20)

输出:

20
40