The var keyword define variable.

The let keyword define constant.

Constant and variable names can’t contain whitespace characters, mathematical symbols, arrows, private-use Unicode scalar values, or line- and box-drawing characters. Nor can they begin with a number, although numbers may be included elsewhere within the name.

All other Unicode characters are allowed.

Type annotation can be skipped, when variable initialized by value.

// var <variable-name> [: <type-name>] = <value>

let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0

var x = 0.0, y = 0.0, z = 0.0

var welcomeMessage: String
welcomeMessage = "Hello"

let π = 3.14159
let 你好 = "你好世界"
let 🐶🐮 = "dogcow"

The ? after type name means that variable may have special nil value to indicate a valueless state. It also called optional type.

var serverResponseCode: Int? = 404
// serverResponseCode contains an actual Int value of 404

serverResponseCode = nil
// serverResponseCode now contains no value

var surveyAnswer: String?
// surveyAnswer is automatically set to nil

if convertedNumber != nil {
    print("convertedNumber contains some integer value.")