Over a million developers have joined DZone.

Scala: HOF (Higher-Order Function)

DZone's Guide to

Scala: HOF (Higher-Order Function)

Check out this quick read on high-order function in Scala, with examples.

· Java Zone ·
Free Resource

Take 60 minutes to understand the Power of the Actor Model with "Designing Reactive Systems: The Role Of Actors In Distributed Architecture". Brought to you in partnership with Lightbend.

Scala allows the definition of higher-order function. These are functions that take other functions as parameters, or whose result is a function.

A higher-order function, as opposed to a first-order function, can have one of three forms:

  • One or more of its parameters is a function, and it returns some value.
  • It returns a function, but none of its parameters is a function.
  • Both of the above: One or more of its parameters is a function, and it returns a function.

If you have followed this series, you have seen a lot of usages of higher-order functions of the first type: We called methods like map, filter, or flatMap and passed a function to it that was used to transform or filter a collection in some way. Very often, the functions we passed to these methods were anonymous functions.

Example: [map]

object HOF {

    def main(args: Array[String]) {
      val list = List(
        ("Bala", "S"),
        ("Balamanikandan", "T"),
        ("Karthik", "P"),
        ("Karthik", "S"),
        ("Maharajothi", "T"),
        ("Meenatchi", "T"))

      // Higher order function
      val nameList = list.map(n => getName(firstName = n._1, lastName = n._2))

      println("Result: " + nameList)


  def getName(firstName: String, lastName: String): String = firstName + "." + lastName


Here the map function takes a getName function as a parameter. This is called HOF (Higher order function).


Image title

Learn how the Actor model provides a simple but powerful way to design and implement reactive applications that can distribute work across clusters of cores and servers. Brought to you in partnership with Lightbend.


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}