Ios Swift:调用参数可能为零的函数

Ios Swift:调用参数可能为零的函数,ios,swift,Ios,Swift,我试图找出Swift中最后一行的语法是否更短: var startPosition: CLLocationCoordinate2D? var latitude: Double? var longitude: Double? // ... // Here I have skipped some code which may or may not assign values // to "latitude" and "longitude". // ... if latitude != nil &am

我试图找出Swift中最后一行的语法是否更短:

var startPosition: CLLocationCoordinate2D?
var latitude: Double?
var longitude: Double?
// ...
// Here I have skipped some code which may or may not assign values
// to "latitude" and "longitude".
// ...
if latitude != nil && longitude != nil {
    startPosition = CLLocationCoordinate2DMake(latitude!, longitude!)
}
如您所见,我想根据“纬度”和“经度”设置“起始位置”,如果已经指定了这些值。否则,我接受不会初始化“startPosition”


我想这一定是可能的“如果让”或类似的东西,但我没有弄清楚如何。(我在Objective-C方面很有经验,但刚刚开始学习Swift。)

这并不短,但您可以简单地完成

if let latitude = latitude, let longitude = longitude {
     startPosition = CLLocationCoordinate2D(latitude: latitude,
                                        longitude: longitude)
}

注意,我只使用了CLLocationCoordinate2D,而不是CLLocationCoordinate2DMake。Swift为大多数常见对象提供了不带“make”的构造函数,因此您通常不必在构造函数中使用“make”

这并不短,但您可以简单地执行

if let latitude = latitude, let longitude = longitude {
     startPosition = CLLocationCoordinate2D(latitude: latitude,
                                        longitude: longitude)
}

注意,我只使用了CLLocationCoordinate2D,而不是CLLocationCoordinate2DMake。Swift为大多数常见对象提供了不带“make”的构造函数,因此您通常不必在构造函数中使用“make”

如果我正确理解了这个问题,你可以说

var起始位置:CLLocationCoordinate2D?
纬度:双倍?
两倍?
如果纬度!=零和经度!=零{
startPosition=CLLocationCoordination2dMake(纬度,经度)
}否则{
起始位置=零
}

如果我正确理解了这个问题,你可以说

var起始位置:CLLocationCoordinate2D?
纬度:双倍?
两倍?
如果纬度!=零和经度!=零{
startPosition=CLLocationCoordination2dMake(纬度,经度)
}否则{
起始位置=零
}

如果您不想在代码为零后执行任何代码,请使用防护装置

var起始位置:CLLocationCoordinate2D?
纬度:双倍?
两倍?
守卫让纬度=纬度和经度=经度{
返回
}
startPosition=CLLocationCoordination2dMake(纬度、经度)

如果您不想在代码为零后执行任何代码,请使用防护装置

var起始位置:CLLocationCoordinate2D?
纬度:双倍?
两倍?
守卫让纬度=纬度和经度=经度{
返回
}
startPosition=CLLocationCoordination2dMake(纬度、经度)
净空

if let latitude = latitude, longitude = longitude {
     startPosition = CLLocationCoordinate2D(latitude: latitude,
                                            longitude: longitude)
}
CLLocationCoordinate2D是一个结构,最好使用结构初始值设定项。请注意,if语句中只需要一个“let”

无障碍道路

if let latitude = latitude, longitude = longitude {
     startPosition = CLLocationCoordinate2D(latitude: latitude,
                                            longitude: longitude)
}
CLLocationCoordinate2D是一个结构,最好使用结构初始值设定项。请注意,if语句中只需要一个“let”


很抱歉,但这与我自己的代码给出的结果相同。也许我应该更清楚地说明,在执行if语句时,“startPosition”是未初始化的(即等于nil)。对不起,这会给出与我自己的代码相同的结果。也许我应该更清楚地说明,在执行if语句时,“startPosition”是未初始化的(即等于nil)。谢谢您的快速回答!让我们看看其他人是否会找到一个更短的语法来执行此操作。无论如何,你的回答帮助我更好地理解了“如果让”这个词。你不应该在回答中用
CLLocationCoordinate2DMake(纬度,经度)
替换
CLLocationCoordinate2D(纬度,经度)
,因为后者不可编译。如果使用结构初始值设定项,则必须包含完整的参数标签,如Edward Anthony的回答中所示:
CLLocationCoordinate2D(纬度:纬度,经度:经度)
。是的,很好,抱歉,请快速移动。Edward是正确的,您应该在这里使用结构初始值设定项。当您学习swift时,您会发现您将拥有插值ObjectiveC和相应的swift方法供您使用。如果这是一场“较短答案”的比赛,你可以选择快速的方法。使用
lat
lng
替代:与使用良好的旧“make”函数相比,使用结构初始值设定项有哪些好处?它是关于美丽和保持语言整洁的吗?还是有更多实质性的好处?只是好奇…谢谢你的快速回答!让我们看看其他人是否会找到一个更短的语法来执行此操作。无论如何,你的回答帮助我更好地理解了“如果让”这个词。你不应该在回答中用
CLLocationCoordinate2DMake(纬度,经度)
替换
CLLocationCoordinate2D(纬度,经度)
,因为后者不可编译。如果使用结构初始值设定项,则必须包含完整的参数标签,如Edward Anthony的回答中所示:
CLLocationCoordinate2D(纬度:纬度,经度:经度)
。是的,很好,抱歉,请快速移动。Edward是正确的,您应该在这里使用结构初始值设定项。当您学习swift时,您会发现您将拥有插值ObjectiveC和相应的swift方法供您使用。如果这是一场“较短答案”的比赛,你可以选择快速的方法。使用
lat
lng
替代:与使用良好的旧“make”函数相比,使用结构初始值设定项有哪些好处?它是关于美丽和保持语言整洁的吗?还是有更多实质性的好处?只是好奇。。。