protocol Arithmetic Declares methods backing binary arithmetic operators--such as +, - and *--and their mutating counterparts. It provides a suitable basis for arithmetic on scalars such as integers and floating point numbers. Both mutating and non-mutating operations are declared in the protocol, however only the mutating ones are required, as default implementations of the non-mutating ones are provided by a protocol extension. The Magnitude associated type is able to hold the absolute value of any possible value of Self. Concrete types do not have to provide a typealias for it, as it can be inferred from the magnitude property. This property can be useful in operations that are simpler to implement in terms of unsigned values, for example, printing a value of an integer, which is just printing a '-' character in front of an absolute value. Please note that for ordinary work, the magnitude property should not be preferred to the abs(_) function, whose return value is of the same type as its argument. Inheritance Equatable, ExpressibleByIntegerLiteral View Protocol Hierarchy → Associated Types Magnitude : Equatable, ExpressibleByIntegerLiteral IntegerLiteralType A type that represents an integer literal. The standard library integer and floating-point types are all valid types for IntegerLiteralType. Import import Swift Initializers init(integerLiteral:) 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. value: The value to create. Declaration init(integerLiteral value: Self.IntegerLiteralType) Declared In ExpressibleByIntegerLiteral Instance Variables var magnitude: Self.Magnitude Required Declaration var magnitude: Self.Magnitude { get } Instance Methods func ==(_:rhs:) Required Returns a Boolean value indicating whether two values are equal. Equality is the inverse of inequality. For any values a and b, a == b implies that a != b is false. Parameters: lhs: A value to compare. rhs: Another value to compare. Declaration func ==(lhs: Self, rhs: Self) -> Bool Declared In Equatable mutating func add(_:) Required Declaration mutating func add(_ rhs: Self) func adding(_:) Declaration func adding(_ rhs: Self) -> Self mutating func divide(by:) Required Declaration mutating func divide(by rhs: Self) func divided(by:) Declaration func divided(by rhs: Self) -> Self func multiplied(by:) Declaration func multiplied(by rhs: Self) -> Self mutating func multiply(by:) Required Declaration mutating func multiply(by rhs: Self) mutating func subtract(_:) Required Declaration mutating func subtract(_ rhs: Self) func subtracting(_:) Declaration func subtracting(_ rhs: Self) -> Self Default Implementations init() Declaration init() init(integerLiteral:) Create an instance initialized to value. Declaration init(integerLiteral value: Self) Declared In ExpressibleByIntegerLiteral func adding(_:) Declaration func adding(_ rhs: Self) -> Self func divided(by:) Declaration func divided(by rhs: Self) -> Self func multiplied(by:) Declaration func multiplied(by rhs: Self) -> Self func subtracting(_:) Declaration func subtracting(_ rhs: Self) -> Self