Category : Scala | Sub Category : Scala Programs | By Prasad Bonam Last updated: 2023-10-21 03:46:43 Viewed : 246
In Scala, functions are treated as first-class citizens, which means they can be treated like any other value. They can be assigned to variables, passed as arguments to other functions, and returned from other functions. Higher-order functions are functions that take other functions as parameters or return functions as results. Here is an overview of first-class functions and higher-order functions in Scala:
First-Class Functions:
scalaval add: (Int, Int) => Int = (x, y) => x + y
Higher-Order Functions:
scaladef operate(f: (Int, Int) => Int, a: Int, b: Int): Int = f(a, b)
In the provided examples, add
is a first-class function that takes two integers as parameters and returns their sum. The operate
function is a higher-order function that takes another function f
as one of its parameters, along with two integers, and applies f
to the provided integers. This showcases the usage of higher-order functions in abstracting common patterns and behaviors.
Below are examples of first-class functions and higher-order functions in Scala, along with the corresponding outputs:
Example of First-Class Functions:
scala// First-class function: Addition val add: (Int, Int) => Int = (x, y) => x + y // Using the first-class function val result = add(3, 5) println(result) // Output: 8
In this example, add
is a first-class function that takes two integer parameters and returns their sum. We then call the add
function with the arguments 3
and 5
, which results in the sum 8
being printed to the console.
In the line val add: (Int, Int) => Int = (x, y) => x + y
in Scala, a function named add
is being defined. Here is an explanation of each part:
val
: This keyword is used to declare an immutable variable in Scala. In this case, the variable add
is being declared.
(Int, Int) => Int
: This represents the functions type, which specifies that the function takes two integer parameters and returns an integer.
= (x, y) => x + y
: This is the function literal or anonymous function. It takes two parameters x
and y
and returns their sum x + y
.
When this code is executed, the function add
is created and can be used like any other value. For example, you can call the add
function and pass in two integers as arguments, and it will return the sum of the two integers. Here is an example of how you might use the add
function:
scalaval result = add(3, 5) println(result) // Output: 8
In this case, the add
function is called with the arguments 3
and 5
, and it returns 8
, which is then printed to the console.
Example of Higher-Order Functions:
scala// Higher-order function: Applying a function to two integers def operate(f: (Int, Int) => Int, a: Int, b: Int): Int = f(a, b) // Using the higher-order function val result = operate((x, y) => x * y, 3, 5) println(result) // Output: 15
In this example, the operate
function is a higher-order function that takes another function f
along with two integer parameters a
and b
. We then call the operate
function with a function that multiplies two integers, 3
and 5
as arguments, resulting in 15
being printed to the console.
These examples demonstrate the concepts of first-class functions and higher-order functions in Scala, showcasing how functions can be treated as values and passed around as arguments to other functions, enabling powerful and flexible programming paradigms.