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.call 、 my_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