Home > Scala > Tuples- Returning multiple values in Scala

Tuples- Returning multiple values in Scala

When I was coding in Java I used to build Classes just to return multpile values and also sometimes used pass by reference (by means of using Objects).  I really missed a permanent solution 😦 Scala has a solution for this- It supports something called “Tuples”  which is created with the literal syntax of a comma-separated list of the items inside parentheses like (x1,x2,x3 …). The items in the parantheses may not be related to each other in terms of the type, which means that we can have String’s, Int’s and so on. These literal “groupings” are instantiated as scala.TupleN instances, where the N is the number of items in the tuple. The Scala API defines separate TupleN classes for N between 1 and 22, inclusive. Tuples can be assigned to variables, passed as values or return them from the methods.

Let me explain this with an example (I have used the interactive mode of scala command):

scala> val tple=("Hello World",56, 56.66, true)
tple: (java.lang.String, Int, Double, Boolean)= (Hello, Int, Double, Boolean)

The above code creates a tuple of 4 elements of totally unrelated types.  It can be clearly seen in the result printed soon after the statement.

scala>println(tple._1)
Hello World

scala>println(tple._4)
true

It has to be noted that the parameter are referenced from 1 and not from 0. So its pretty straight forward- use <Tuple Name>._<Parameter Position> to access the element.

There are different ways of creating Tuples. Some of them are:

scala>Tuple4(5,6,"Hello",6.5)
res0:(Int,Int,java.lang.String, Double)=(5,6,"Hello",6.5)

scala>val tple1=1->2->"Hi"
tple1: ((Int,Int),java.lang.String)=((1,2),"Hi")

Observe that the tple1 contains another tuple inside it- (Int,Int). Use the same idea to access it.

scala>println(tple1._1._1)1

This was in brief about Tuples. This concept caught my attention immediately as i had faced the problem in Java. So thought of describing it here.

Advertisements
Categories: Scala Tags: , , ,
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: