Scala Lesson 31 – Implicit Parameters | Dataplexa

Implicit Parameters

In this lesson, you will learn about Implicit Parameters in Scala. Implicit parameters allow Scala to automatically pass values to functions without explicitly specifying them every time.

This feature helps reduce repetitive code and makes programs cleaner when the same values are used repeatedly across functions.


What Are Implicit Parameters?

Implicit parameters are function parameters that Scala fills in automatically if an implicit value of the correct type is available in scope.

Instead of passing arguments manually, Scala searches for matching implicit values.


Basic Implicit Parameter Example

Let’s start with a simple example.

def greet(name: String)(implicit greeting: String): String =
  s"$greeting, $name"

Here, greeting is an implicit parameter.


Defining an Implicit Value

To use implicit parameters, you must define an implicit value in scope.

implicit val defaultGreeting: String = "Hello"

Now you can call the function without passing the implicit parameter.

println(greet("Scala"))

Scala automatically injects defaultGreeting.


Explicit vs Implicit Passing

You can still pass the implicit parameter explicitly if needed.

println(greet("Scala")("Welcome"))

This overrides the implicit value.


Implicit Parameters in Methods

Implicit parameters are commonly used in methods that require contextual information.

def calculateTotal(price: Double)(implicit tax: Double): Double =
  price + (price * tax)

Define an implicit tax rate:

implicit val taxRate: Double = 0.18

Usage:

println(calculateTotal(100))

Multiple Implicit Parameters

A function can have multiple implicit parameters, but they must be placed in the same implicit parameter list.

def formatMessage(msg: String)
                 (implicit prefix: String, suffix: String): String =
  s"$prefix$msg$suffix"

Where Scala Looks for Implicit Values

Scala searches for implicit values in:

  • The local scope
  • Imported objects
  • Companion objects of the parameter type

If no matching implicit value is found, compilation fails.


Why Implicit Parameters Are Useful

  • Reduce repetitive arguments
  • Provide contextual configuration
  • Improve code readability
  • Support advanced abstractions

📝 Practice Exercises


Exercise 1

Create a function with an implicit parameter for currency symbol.

Exercise 2

Define an implicit value and call the function without passing it explicitly.

Exercise 3

Override the implicit value by passing an explicit argument.


✅ Practice Answers


Answer 1 & 2

def showPrice(amount: Double)(implicit currency: String): String =
  s"$currency$amount"

implicit val defaultCurrency: String = "$"

println(showPrice(99.99))

Answer 3

println(showPrice(99.99)("€"))

What’s Next?

In the next lesson, you will learn about Implicit Conversions and how Scala automatically converts values between types when needed.