I recently found an Int
initializer:
init?<S>(_ text: S, radix: Int = 10) where S: StringProtocol
As you can see, the second parameter radix
has a default value with 10, so I can call this function without providing it.
Meanwhile, String
does conform to this StringProtocol
through the following extension:
extension String : StringProtocol {
//...
}
And there is another initializer for Int
:
init?(_ description: String)
Given the code:
let x = Int("123")
How could the Swift compiler know which initializer to call as this statement matches both of them. What factors influence its decision-making process?