ios - AnyObject vs. Struct (Any) -
i create method projects:
func print(obj: anyobject) { if let rect = obj as? cgrect { println(nsstringfromcgrect(rect)) } else if let size = obj as? cgsize { println(nsstringfromcgsize(size)) } //... }
but can't because cgrect
, cgsize
struct
s , not conform anyobject
protocol
. so, ideas on how done?
@nkukushkin's answer correct, however, if want function behaves differently depending on whether it’s passed cgrect
or cgstruct
, better off overloading:
func print(rect: cgrect) { println(nsstringfromcgrect(rect)) } func print(size: cgsize) { println(nsstringfromcgsize(size)) }
in comparison, any
both inefficient (converting structs any
, back, have big impact if lot in tight loop), , non-typesafe (you can pass function, , fail @ runtime).
if intention coerce both types common type , same operation on it, can create 3rd overload takes type, , have other 2 call it.
Comments
Post a Comment