我刚刚开始使用Swift 3,我正在将一个Rails项目转换为swift(在我学习的同时进行项目)
相当简单,我有一个Rails语句Im转换和我在Xcode中得到很多红色错误:
std::tuple<double, vector<int>> t = std::make_tuple(0.0, vector<int>{1,3});
let startingPoint: Int = 1
let firstRange: ClosedRange = (2...10)
let secondRange: ClosedRange = (11...20)
func calc(range: Float) -> Float {
switch range {
case startingPoint:
return (range - startingPoint) * 1 // or 0.2
case firstRange:
return // code
default:
return //code
}
}
将具有calc
或Int
值:Float
或10
错误是:
ClosedRange类型的表达式模式不能匹配Float类型的值
二元运算符 - 不能应用于Float和Int
类型的操作数
我理解错误,但我不知道要搜索什么来纠正错误。你能指出我正确的方向吗?
答案 0 :(得分:4)
Swift是强类型的。无论何时使用变量或将某些东西作为函数参数传递,Swift都会检查它是否为正确的类型。你不能将一个字符串传递给一个需要整数等的函数.Swift在编译时检查它(因为它是静态类型的)。
要遵守该规则,请尝试将代码更改为:
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
// your code goes here if needed
return true; //disabled touching in whole activity
}
答案 1 :(得分:0)
对于第一个错误,您可能希望将ClosedRange指定为Floats类型。类似于:
let firstRange: ClosedRange<Float> = (2...10)
对于第二个错误,问题是您正在尝试将Float(范围:Float)与Int(startingPoint)进行比较。所以我建议你将startingPoint变量转换为Float。