Asım Gündüz
Asım Gündüz

Reputation: 1297

correct declaration of variables in swift

Hi I'm new to swift language, first of all I don't know if this is a permitable topic I'm creating but I need to understand this and couldn't find any information on the web for this

in swift I realized there's a couple of ways for declaring a variable and it's type. but I don't know the differences and don't know where to use which..

correct me If I am wrong.. to begin with: when

var anything = "When I do it like this my anything variable becomes type of string" 

but if I type

var anything = 12 //it's type Int 

and so on.. apart from this I could also declare these variables as

var anything:Int

or

var anything:String

so far I'm good with this but what is the difference of declaring a global variable as

var anything:String 

or

var anything:String = String()

how do I decide to use which and where? thank you

Upvotes: 1

Views: 216

Answers (3)

Kirsteins
Kirsteins

Reputation: 27345

Swift types can be inferred (determined from the context). In

var anything: Int = 12

Int is redundant as it can be inferred form context (Int is default for integer literals). However sometimes you need more specific like Int8. You can then explicitly declare the type or use initialiser to infer the type type:

var anything: Int8 = 12

or

var anything = Int8(12)

Personally I used type inferring whenever I can and haven't run into any problems yet.

Upvotes: 2

Vasil Garov
Vasil Garov

Reputation: 4931

I'll start backwards. What is the difference between var anything:String and var anything:String = String()

The first one declares a variable called anything of type String and the second initializes it by calling String's constructor. In the first case you will have to tell Swift's compiler what to expect from this variable - will it have a value or it will be nil. So the best thing to do if you don't know this is to declare it as optional:

var anything:String?

About the types that you initialize like this var anything = 12, Swift determines the type by the context, in this case it is an Int.

Upvotes: 2

gutenmorgenuhu
gutenmorgenuhu

Reputation: 2362

Your question is very basic, but I understand the trouble of learning a new language and that you need help. It is the standard learning curve.

Swift uses a technique called type inference. It can determine the type of a variable from the initial value.

var v = 8

automatically make v an Int.

var v:Int = 8

does the same

You can always use inferred types. Try to make your code readable and if type-inference improves the readability, then use it. If you need more context to be able to understand your code 2 weeks after writing it, use explicitly declared types.

When you declare variables without an initial value you always have to declare the type explicitly. In this case, the compiler does not have any chance to guess the type.

Upvotes: 1

Related Questions