متد apply می تواند برای یک کلاس و companion object آن کلاس تعریف شود و یک روش برای کوتاه سازی ایجاد یک شئ (factory pattern) از آن کلاس و همچنین دسترسی به عناصر درون اشیاء آن کلاس است و کامپایلر اسکالا در صورتی که به این سینتکس های کوتاه شده برسد آنها را با متد های apply جایگزین می کند:
object Main extends App{
val saeedGoal = Goal("t1") // call apply method in companion object
println("saeed goal is = "+saeedGoal()) // call apply method in class
}
class Goal(goal: String){
private var goalTitle = goal;
def apply() = goalTitle
}
object Goal{
def apply(goal: String)= new Goal(goal)
}