math - return Int from a generic mathematics type in swift -


how require generic type usable in mathematical operations mentioned here

which led me protocol

protocol mathematicsprotocol : equatable {     init(_ value: int)     init(_ value: float)     init(_ value: double)      func + (lhs: self, rhs: self) -> self     func - (lhs: self, rhs: self) -> self     func * (lhs: self, rhs: self) -> self     func / (lhs: self, rhs: self) -> self } extension int:    mathematicsprotocol {} extension float:  mathematicsprotocol {} extension double: mathematicsprotocol {} 

used in snippet

struct myrange<datatype : mathematicsprotocol> {     let start : datatype     let end   : datatype     let step  : datatype      subscript(index: int) -> datatype     {         {             assert(index < self.count)             return start + datatype(index) * step         }     }      var count : int {         return int((end-start)/step) //not working //      return 4     } } 

however conversion of datatype int in count function doesn't work. there way fix this?

edit: works, it's ugly hack using string temporary value.

func convert<datatype : mathematicsprotocol>(value : datatype) -> int {     let intermediate = "\(value)" nsstring     return intermediate.integervalue } 

you have define how mathematicsprotocol converted int, e.g. adding intvalue property protocol:

protocol mathematicsprotocol {     // ...      var intvalue : int { } } extension int:    mathematicsprotocol {     var intvalue : int  { return self } } extension float:  mathematicsprotocol {     var intvalue : int { return int(self) } } extension double: mathematicsprotocol {     var intvalue : int { return int(self) } } 

then can use as

var count : int {     return ((end-start)/step).intvalue } 

Comments

Popular posts from this blog

python - mat is not a numerical tuple : openCV error -

c# - MSAA finds controls UI Automation doesn't -

wordpress - .htaccess: RewriteRule: bad flag delimiters -