Scala Library: scala.Function2
scala.Function2
trait Function2[-T1, -T2, +R] extends AnyRefA function of 2 parameters.
In the following example, the definition of max is a shorthand for the anonymous class definition anonfun2:
object Main extends App {
   val max = (x: Int, y: Int) => if (x < y) y else x
   val anonfun2 = new Function2[Int, Int, Int] {
     def apply(x: Int, y: Int): Int = if (x < y) y else x
   }
   assert(max(0, 1) == anonfun2(0, 1))
}- Self Type
    
- (T1, T2) ⇒ R
 
 - Source
 
Abstract Value Members From scala.Function2
abstract def apply(v1: T1, v2: T2): R
Apply the body of this function to the arguments.
- returns
    
- the result of function application.
 
 
(defined at scala.Function2)
Concrete Value Members From scala.Function2
def curried: (T1) ⇒ (T2) ⇒ R
Creates a curried version of this function.
- returns
    
- a function 
fsuch thatf(x1)(x2) == apply(x1, x2) 
 - a function 
 - Annotations
    
- @ unspecialized ()
 
 
(defined at scala.Function2)
def tupled: ((T1, T2)) ⇒ R
Creates a tupled version of this function: instead of 2 arguments, it accepts a single scala.Tuple2 argument.
- returns
    
- a function 
fsuch thatf((x1, x2)) == f(Tuple2(x1, x2)) == apply(x1, x2) 
 - a function 
 - Annotations
    
- @ unspecialized () (defined at scala.Function2)
 
 
Full Source:
/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2002-2013, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
\*                                                                      */
// GENERATED CODE: DO NOT EDIT. See scala.Function0 for timestamp.
package scala
/** A function of 2 parameters.
 *  
 *  In the following example, the definition of max is a
 *  shorthand for the anonymous class definition anonfun2:
 *
 *  {{{
 *  object Main extends App {
 *    val max = (x: Int, y: Int) => if (x < y) y else x
 *
 *    val anonfun2 = new Function2[Int, Int, Int] {
 *      def apply(x: Int, y: Int): Int = if (x < y) y else x
 *    }
 *    assert(max(0, 1) == anonfun2(0, 1))
 * }
 *  }}}
 */
trait Function2[@specialized(scala.Int, scala.Long, scala.Double) -T1, @specialized(scala.Int, scala.Long, scala.Double) -T2, @specialized(scala.Unit, scala.Boolean, scala.Int, scala.Float, scala.Long, scala.Double) +R] extends AnyRef { self =>
  /** Apply the body of this function to the arguments.
   *  @return   the result of function application.
   */
  def apply(v1: T1, v2: T2): R
  /** Creates a curried version of this function.
   *
   *  @return   a function `f` such that `f(x1)(x2) == apply(x1, x2)`
   */
  @annotation.unspecialized def curried: T1 => T2 => R = {
    (x1: T1) => (x2: T2) => apply(x1, x2)
  }
  /** Creates a tupled version of this function: instead of 2 arguments,
   *  it accepts a single [[scala.Tuple2]] argument.
   *
   *  @return   a function `f` such that `f((x1, x2)) == f(Tuple2(x1, x2)) == apply(x1, x2)`
   */
  @annotation.unspecialized def tupled: Tuple2[T1, T2] => R = {
    case Tuple2(x1, x2) => apply(x1, x2)
  }
  override def toString() = "<function2>"
}Interested in Scala?
I send out weekly, personalized emails with articles and conference talks.
Subscribe now.