protocol ExpressibleByIntegerLiteral A type that can be initialized with an integer literal. Conforming Types Double, Float, Float80, Numeric Associated Types associatedtype IntegerLiteralType The standard library integer and floating-point types are all valid types for IntegerLiteralType. The standard library integer and floating-point types, such as Int and Double, conform to the ExpressibleByIntegerLiteral protocol. You can initialize a variable or constant of any of these types by assigning an integer literal. // Type inferred as 'Int' let cookieCount = 12 // An array of 'Int' let chipsPerCookie = [21, 22, 25, 23, 24, 19] // A floating-point value initialized using an integer literal let redPercentage: Double = 1 // redPercentage == 1.0 Conforming to ExpressibleByIntegerLiteral To add ExpressibleByIntegerLiteral conformance to your custom type, implement the required initializer. Initializers init init(integerLiteral:) Required Creates an instance initialized to the specified integer value. Do not call this initializer directly. Instead, initialize a variable or constant using an integer literal. For example: let x = 23 In this example, the assignment to the x constant calls this integer literal initializer behind the scenes. Parameter value: The value to create. Declaration init(integerLiteral value: Self.IntegerLiteralType)