如何制作用户只能传递特定值的方法
button.setTitle("SKIP", for: .normal)
setTitle方法在“ for”之后采用特定参数,我们只需按即可。 (点),并显示通过值的建议。
我想做同样的事情,例如,我想做一个计算两点之间距离的方法,
func distanceBetween(loc1: CLLocation, and loc2: CLLocation, unit: String) -> CLLocationDistance {}
在这里,用户将传递location1和location2作为参数,我想限制用户传递单位时,他应该只有3个选项,公里,英里和米。
答案 0 :(得分:1)
使用所需的值创建一个enum
并将该枚举用作参数。
enum Unit {
case km
case miles
case meters
}
现在您的功能将更改为:
func distanceBetween(loc1: CLLocation, and loc2: CLLocation, unit: Unit) -> CLLocationDistance {
switch unit {
case .km:
// Do something for kilometers
case .miles:
// Do something for miles
case .meter:
// Do something for meters
}
如果要添加另一个单元,编译器将抛出错误,提示您尚未指定default
情况,您将立即被处理。
您的函数调用将使用Unit
中的任何一个作为参数。示例:
distanceBetween(loc1: location1, and loc2: location2, unit: .km)