> On Sep 21, 2017, at 3:58 PM, V T via swift-users <[email protected]>
> 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")
HTH,
Dave
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users