2015-10-14 3 views
-1

Я получаю около 10 предупреждающих знаков, позволяющих мне знать, что я должен рассмотреть возможность использования let вместо var в этих ситуациях. Пусть константа, где var изменяется. В этом случае, изменилось бы, чтобы принять правильное решение?Использование var vs. let в Swift 2 для карт

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    var latitude: CLLocationDegrees = 50.0358 

    var longitute: CLLocationDegrees = 19.1783 

    var latDelta: CLLocationDegrees = 0.5 

    var longDelta: CLLocationDegrees = 0.5 

    var span: MKCoordinateSpan = MKCoordinateSpanMake(latDelta, longDelta) 

    var location: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitute) 

    var region: MKCoordinateRegion = MKCoordinateRegionMake(location, span) 

    mapView.setRegion(region, animated: true) 

    var annotation = MKPointAnnotation() 

    annotation.coordinate = location 

    annotation.title = "Auschwiz" 

    annotation.subtitle = "German Nazi concentration camp." 

    mapView.addAnnotation(annotation) 

    var uilpgr = UILongPressGestureRecognizer(target: self, action: "action:") 

    uilpgr.minimumPressDuration = 2 

    mapView.addGestureRecognizer(uilpgr) 
+2

Команда Swift рекомендует использовать константы по умолчанию и использовать переменные только в том случае, если вам действительно нужно мутировать этот объект в вашей логике кода. Поэтому по умолчанию используйте 'let' всюду, если вы действительно не можете заставить его работать и нуждаетесь в переменной. tl; dr Компилятор прав. – Moritz

ответ

1

В этом случае выбор между var и let это скорее вопрос читаемости.

Когда люди читают ваш код, см. var, они ожидают, что значение этой переменной изменится в какой-то момент. Аналогично, когда они видят let, они знают, что переменная не может измениться.

Это разделение сильное в уме быстрых программистов. Использование var в переменной, которая не предназначена для изменения, может вводить в заблуждение. Ваша программа работает отлично, но это создает определенную путаницу для читателя, поэтому вы получаете предупреждение.

Я, как правило, определяю локальные переменные с let изначально, а затем с заменой на var при необходимости.

1

Да, в этом случае используется let. Вы в основном должны спросить себя, будут ли эти значения latitude, longitude, latDelta и т. Д., Когда-либо измените? Если ответ отрицательный, то, глядя на ваш код, это довольно очевидно, что они никогда не изменятся, а затем используйте let.

Это относится ко всем ситуациям, не имеет значения, являются ли ваши определяющие значения для объектов карты, объектов пользовательского интерфейса или любых других объектов на языке быстрого доступа.

Наконец, не только различия между let и var поддается дополнительной читаемости другими программистами, от чистого точки зрения развития, immutables или let значений, может быть подвергнуто оптимизации компилятором.

Смежные вопросы