Col*_*iot 17 types cgfloat swift
我在Swift中编写一个函数来检测我点击的六边形.但是我遇到了一个特殊的错误消息,指出我不能添加两个CGFloats.无论我做了,例如改变let到var,申报并分别分配,没有工作.我想一定有别的错误,但我找不到.代码如下:
func pointToCoordinate(position: CGPoint) -> (Int, Int) {
var gridHeight = 2 * singleRadius / sqrt(CGFloat(3)) * 1.5
var gridWidth = 2 * singleRadius
var halfWidth = singleRadius
var relativePosition = CGPoint(x: position.x - totalRadius / 2, y: position.y - totalRadius / 2)
println((relativePosition.y / gridHeight))
var row = -(cgfloatToInt)(relativePosition.y / gridHeight)
var column: Int
println((relativePosition.x + halfWidth * CGFloat(row + 1)) / (gridWidth))
column = cgfloatToInt((relativePosition.x + halfWidth * CGFloat(row + 1)) / (gridWidth))
// var innerY: CGFloat = CGFloat(relativePosition.y) + CGFloat(gridHeight * row)
var innerX = relativePosition.x
var innerY = relativePosition.y
innerY = innerY - CGFloat(gridHeight * row)
println((innerX, innerY))
return (column, row)
}
Run Code Online (Sandbox Code Playgroud)

vac*_*ama 55
错误消息是错误的.问题是你试图乘以a Int和a CGFloat.
更换:
innerY = innerY - CGFloat(gridHeight * row)
Run Code Online (Sandbox Code Playgroud)
有:
innerY = innerY - gridHeight * CGFloat(row)
Run Code Online (Sandbox Code Playgroud)
上面的答案是针对当前版本的代码.对于与您发布的错误消息对应的注释掉的版本:
更换:
var innerY: CGFloat = CGFloat(relativePosition.y) + CGFloat(gridHeight * row)
Run Code Online (Sandbox Code Playgroud)
同
var innerY: CGFloat = CGFloat(relativePosition.y) + gridHeight * CGFloat(row)
Run Code Online (Sandbox Code Playgroud)
浏览所有答案,转换,转换和扩展,我认为对于Swift来说最好的解决方案是Operator Overload。以下是Swift 3.0的代码示例:
/// overloads -/+ between a cgfloat on the left and an int/double on the right
func - (left: CGFloat, right: Double) -> CGFloat {
return left - CGFloat(right);
}
func - (left: CGFloat, right: Int) -> CGFloat {
return left - CGFloat(right);
}
func + (left: CGFloat, right: Double) -> CGFloat {
return left + CGFloat(right);
}
func + (left: CGFloat, right: Int) -> CGFloat {
return left + CGFloat(right);
}
Run Code Online (Sandbox Code Playgroud)
将这个成为一个全球性的地方以外的任何类的。看到魔术发生了。
| 归档时间: |
|
| 查看次数: |
34836 次 |
| 最近记录: |