Wednesday, June 8, 2016

Swift Programming - Data Types

In any programming language, you need to use different types of variables to store information. Variables are nothing but reserved memory locations to store values. it means you reserve memory to store value.

You may like to store information of various data types like string, character, wide character, integer, floating point, Boolean, etc. Based on the data type of a variable, the operating system allocates memory and decides what can be stored in the reserved memory.

Built-in Data Types


Swift offers following datatypes.

Int/UInt

Int/UInt used for whole integer numbers. More specifically, you can use Int32, Int64 to define 32 or 64 bit signed integer, whereas UInt32 or UInt64 to define 32 or 64 bit unsigned integer variables. 
Example, 20 and -68.

Float

Float is used to represent a 32-bit floating-point number and numbers with smaller decimal points. 
Example, 7.56554  and -134.867.

Double

Double used to represent a 64-bit floating-point number and used when floating-point values must be very large. For example, 3.14159, 0.1, and -273.158.

Bool

Bool represents a Boolean value which is either true or false.

String

This is an ordered collection of characters. 
Example, "Swift Programming"

Character

Characters is a single-character string literal. For example, "D"

Optional

Optional represents a variable that can hold either a value or no value.

We have listed here a few important points related to Integer types −
  • On a 32-bit platform, Int is the same size as Int32.
  • On a 64-bit platform, Int is the same size as Int64.
  • On a 32-bit platform, UInt is the same size as UInt32.
  • On a 64-bit platform, UInt is the same size as UInt64.
  • Int8, Int16, Int32, Int64 can be used to represent 8 Bit, 16 Bit, 32 Bit, and 64 Bit forms of signed integer.
  • UInt8, UInt16, UInt32, and UInt64 can be used to represent 8 Bit, 16 Bit, 32 Bit and 64 Bit forms of unsigned integer.

Bound Values

The following table shows the variable type, how much memory it takes to store the value in memory, and what is the maximum and minimum value which can be stored in such type of variables.

Type

Typical Bit Width

Typical Range

Int81byte-127 to 127
UInt81byte0 to 255
Int324bytes-2147483648 to 2147483647
UInt324bytes0 to 4294967295
Int648bytes-9223372036854775808 to 9223372036854775807
UInt648bytes0 to 18446744073709551615
Float4bytes1.2E-38 to 3.4E+38 (~6 digits)
Double8bytes2.3E-308 to 1.7E+308 (~15 digits)

Type Aliases

You can create a new name for an existing type using typealias. Here is the simple syntax to define a new type using typealias −typealias newname = type

Example, the following line instructs the compiler that Feet is another name for Int −typealias Feet = Int

Now, the following declaration is perfectly legal and creates an integer variable called distance −import Cocoa typealias Feet = Int var distance: Feet = 100 println(distance)

When we run the above program using playground, we get the following result −100

Type Safety
Swift is a type-safe language which means if a part of your code expects a String, you can't pass it an Int by mistake.

As Swift is type-safe, it performs type-checks when compiling your code and flags any mismatched types as errors.import Cocoa var varA = 42 varA = "Welcome to Blog" println(varA)


When we compile the above program, it produces the following compile time error.Playground execution failed: error: <EXPR>:6:6: error: cannot assign to 'let' value 'varA' varA = "Welcome to Blog"

Type Inference

Type inference enables a compiler to deduce the type of a particular expression automatically when it compiles your code, simply by examining the values you provide. Swift uses type inference to work out the appropriate type as follows.import Cocoa // varA is inferred to be of type Int var varA = 42 println(varA) // varB is inferred to be of type Double var varB = 3.14159 println(varB) // varC is also inferred to be of type Double var varC = 3 + 0.14159 println(varC)


When we run the above program using playground, we get the following result −42 3.14159 3.14159

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.