这个问题在这里已有答案:
对于泛型函数,Type应采用什么协议来将任何数字类型作为Swift中的参数? 2个答案我刚开始学习swift,我正试图用swift转换英尺/英寸。 下面是我写的代码。
func feetToInchesInt(feet:Int) -> Double { return Double(feet*12) } func feetToInchesDouble(feet:Double) -> Double { return feet*12 } func feetToInchesFloat(feet:Float) -> Float { return feet*12 } func InchesToFeetInt(inches:Int) -> Double { return Double(inches/12) } func InchesToFeetDouble(inches:Double) -> Double { return inches/12 } func InchesToFeetFloat(inches:Double) -> Double { return inches/12 }现在,我想用两个泛型替换这些函数。 我尝试了很多,但无法搞清楚。 下面是我被困的地方。 请帮忙。
func feetToInches<T>(feet:T) -> Double { return feet*12 } func inchesToFeet<T>(inches:T) -> Double { return inches/12 } print(feetToInches(10))This question already has an answer here:
What protocol should be adopted by a Type for a generic function to take any number type as an argument in Swift? 2 answersI just started learning swift, and I'm trying to convert feet/inches using swift. Below is the code i wrote.
func feetToInchesInt(feet:Int) -> Double { return Double(feet*12) } func feetToInchesDouble(feet:Double) -> Double { return feet*12 } func feetToInchesFloat(feet:Float) -> Float { return feet*12 } func InchesToFeetInt(inches:Int) -> Double { return Double(inches/12) } func InchesToFeetDouble(inches:Double) -> Double { return inches/12 } func InchesToFeetFloat(inches:Double) -> Double { return inches/12 }Now, i want to replace those functions with two generics. I tried many but can't figure out. Below is where i got stuck. Please help.
func feetToInches<T>(feet:T) -> Double { return feet*12 } func inchesToFeet<T>(inches:T) -> Double { return inches/12 } print(feetToInches(10))最满意答案
对于你的泛型类,为什么不使用Double呢? 当您为函数提供Int和Float时,它可以工作。
来自iOS开发者网站:
Double的精度至少为15位十进制数,而Float的精度可以小至6位十进制数。 要使用的适当浮点类型取决于您在代码中使用的值的性质和范围。 在任何一种类型都适合的情况下,Double是首选。
那么你的通用代码就是:
func feetToInches(feet: Double) -> Double { return inches * 12 } func inchesToFeet(inches: Double) -> Double { return inches / 12 }For your generic class why not just use a Double? It works when you give the function both an Int and a Float.
From the iOS Developer Website:
Double has a precision of at least 15 decimal digits, whereas the precision of Float can be as little as 6 decimal digits. The appropriate floating-point type to use depends on the nature and range of values you need to work with in your code. In situations where either type would be appropriate, Double is preferred.
Then your generic code would just be:
func feetToInches(feet: Double) -> Double { return inches * 12 } func inchesToFeet(inches: Double) -> Double { return inches / 12 }更多推荐
发布评论