WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Scala · Intermediate · question 30 of 100

What is the purpose of ’by-name’ parameters in Scala? Provide an example.?

📕 Buy this interview preparation book: 100 Scala questions & answers — PDF + EPUB for $5

By-name parameters in Scala are a way to pass a block of code or an expression to a function, allowing the function to decide when to execute it, how many times to execute it, or whether to execute it at all. This is particularly useful for implementing control structures or optimizing code in certain situations.

The syntax for by-name parameters is to prefix the type of a function parameter with ‘=>‘.

Here’s an example:

def whileLoop(condition: => Boolean)(body: => Unit): Unit = {
  if (condition) {
    body
    whileLoop(condition)(body)
  }
}

This implementation has a function ‘whileLoop‘ that takes two parameters: ‘condition‘ and ‘body‘. Both are by-name parameters.

‘condition‘ is a by-name parameter of type ‘Boolean‘. It means that the function expects an expression that returns a boolean value, but the expression is not immediately evaluated when calling the function.

‘body‘ is a by-name parameter of type ‘Unit‘, which contains a block of code to be executed. It is also not evaluated immediately but only when it is explicitly called inside the function.

Now let’s use the ‘whileLoop‘ function to implement a simple counter:

var counter = 0

whileLoop(counter < 5) {
  println("Counter: " + counter)
  counter += 1
}

In this example, the ‘whileLoop‘ function is called with a condition ‘counter < 5‘. It keeps evaluating this condition and, if it’s true, executes the body of the loop; the body increments the counter and prints its value. The loop executes 5 times, and the output is:

Counter: 0
Counter: 1
Counter: 2
Counter: 3
Counter: 4

The advantage of by-name parameters is that they provide a way to achieve call-by-need or lazy evaluation. It means that the value of these parameters is not computed until it’s actually used in the code.

Here, the ‘condition‘ parameter’s computation is deferred until the function checks it in the ‘if‘ statement. If the condition is already false when the function is called, it will not execute the loop body at all. This is an essential performance optimization in certain situations, as it avoids unnecessary computations.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Scala interview — then scores it.
📞 Practice Scala — free 15 min
📕 Buy this interview preparation book: 100 Scala questions & answers — PDF + EPUB for $5

All 100 Scala questions · All topics