im Swift-Header Werfen Sie einen Blick:
extension String : StringInterpolationConvertible {
init(stringInterpolationSegment expr: String)
init(stringInterpolationSegment expr: Character)
init(stringInterpolationSegment expr: UnicodeScalar)
init(stringInterpolationSegment expr: Bool)
init(stringInterpolationSegment expr: Float32)
init(stringInterpolationSegment expr: Float64)
init(stringInterpolationSegment expr: UInt8)
init(stringInterpolationSegment expr: Int8)
init(stringInterpolationSegment expr: UInt16)
init(stringInterpolationSegment expr: Int16)
init(stringInterpolationSegment expr: UInt32)
init(stringInterpolationSegment expr: Int32)
init(stringInterpolationSegment expr: UInt64)
init(stringInterpolationSegment expr: Int64)
init(stringInterpolationSegment expr: UInt)
init(stringInterpolationSegment expr: Int)
}
Ähnlich:
func +(lhs: UInt8, rhs: UInt8) -> UInt8
func +(lhs: Int8, rhs: Int8) -> Int8
func +(lhs: UInt16, rhs: UInt16) -> UInt16
func +(lhs: Int16, rhs: Int16) -> Int16
func +(lhs: UInt32, rhs: UInt32) -> UInt32
func +(lhs: Int32, rhs: Int32) -> Int32
func +(lhs: UInt64, rhs: UInt64) -> UInt64
func +(lhs: Int64, rhs: Int64) -> Int64
func +(lhs: UInt, rhs: UInt) -> UInt
func +(lhs: Int, rhs: Int) -> Int
func +(lhs: Float, rhs: Float) -> Float
func +(lhs: Double, rhs: Double) -> Double
func +(lhs: Float80, rhs: Float80) -> Float80
Wenn es möglich wäre eine generische Funktion für alle diese verschiedenen numerischen Typen würden sie zu schreiben, hab es sicher getan. So ist die Antwort auf Ihre Frage muss Nr sein
(Und in jedem Fall können sie kaum eine Klasse Elternteil, da sie nicht Klassen. Sie sind structs.)
Nun, natürlich Wenn nur Int und Double in Frage sind, Sie könnten Int und Double erweitern, um ein gemeinsames Protokoll zu übernehmen und dieses Protokoll den erwarteten Typ ...
Sie teilen viele Protokolle gemeinsam - sie sind beide "AbsoluteValuable" , 'Comparable',' IntegerLiteralConvertible'. Schauen Sie sich [SwiftDoc] (http://swiftdoc.org/type/Double/hierarchy/) an, um sich einen Überblick über die gesamte Hierarchie zu verschaffen. Um diese Frage wirklich zu beantworten, benötigt man mehr Informationen über die Klasse, die man initialisiert - es hängt wirklich davon ab, was "value:' in 'super.init' ist. –
Es erfordert ein Double, um zu initialisieren, aber ich dachte, ich könnte jede Klasse (einschließlich) Doppel in einem Double wickeln und es sollte funktionieren. – Jeef
'Int' und' Double' sind Strukturen, keine Klassen – newacct