> On Oct 1, 2017, at 8:56 AM, Dave Reed via swift-users <swift-users@swift.org> > wrote: > > >> On Sep 21, 2017, at 3:58 PM, V T via swift-users <swift-users@swift.org> >> wrote: >> >> Hi there! >> >> Is there a best way to check if a given type conforms to numeric protocol >> (Integer or FP) at runtime? >> >> func checkNumeric<T>(_ value: T) { >> /* return true if vaiue is Integer or FP */ >> /* this will not compile: */ >> if value is Numeric { >> >> } >> } >> >> Best regards! >> >> VT >> > > I think the way to do it is to try casting as the type, but you can't use > "as? Numeric" as you get: > > error: protocol 'Numeric' can only be used as a generic constraint because it > has Self or associated type requirements > > but you could check for each specific numeric type such as: > > func checkNumeric<T>(_ value: T) { > if (value as? Int != nil) || (value as? Float != nil) { > print("numeric") > } else { > print("not numeric") > } > } > > checkNumeric(3) > checkNumeric(3.0) > checkNumeric("3")
You can also use the 'is' operator, as in 'value is Int || value is Float || value is Double' -- Glenn L. Austin, Computer Wizard, AustinSoft.com
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users