2016-06-28 2 views
0

извините за ОЧЕНЬ вопрос начинающего ... Я просто учился кодировать Swift. Я определяю переменную, а затем печатаю условное сообщение на основе его значения. Когда я изменяю переменную на другое значение, я ожидаю, что строка сообщения изменится, но это не так. Что я делаю не так? Это код:как обновить строку при изменении переменной в Swift

//: Playground - noun: a place where people can play 

import Cocoa 

var str = "Hello, playground" 


var townname = "Azadinos" 
var population: Int = 5422 
var message: String 
var Haspostoffice: Bool = true 

if population < 10000 { 
     message = "with a population of \(population), \(townname) is a small town" 
} else if population >= 10000 && population < 15000 { 
     message = "with a population of \(population), \(townname) is a medium sized town!" 
}else {message = "\(townname) is a huge town!"} 

print (message) 

population = 250000 

print (population) 

print(message) 

Я бы ожидать, что второе сообщение отличается от первого, но это не так. Что я делаю не так? спасибо большое

+0

Простой ответ: вы установите переменную 'message', то не обновлять его на основе новой' population' значения. – MaddTheSane

ответ

0

Вы должны пройти через String Interpolation в Swift Documentation

String interpolation помогает поставить новое значение string из смешанной комбинации constants, variables, literals, and expressions путем включения их значения внутри string literal. Например, как в выше документ:

let multiplier = 3 //This is constant 
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)" 
// message prints : "3 times 2.5 is 7.5" 

Вот ваш рабочий код:

var townname = "Azadinos" 
var population: Int = 5422 
var message: String 
var Haspostoffice: Bool = true 

if population < 10000 { 
    message = "with a population of \(population), \(townname) is a small town" 
} else if population >= 10000 && population < 15000 { 
    message = "with a population of \(population), \(townname) is a medium sized town!" 
} else { 
    message = "\(townname) is a huge town!" 
} 

print (message) 
population = 250000 
print (population) 
print(message) 

Теперь, когда ваш вопрос why it is not updating for second message, вы должны написать функцию, а затем сделать изменения в переменной. Поскольку ваш код работает в одном потоке, i.e начинается и заканчивается на последней строке. Ваши условия if-else не знают, что при изменении в variable(message). Поэтому, если вы хотите, чтобы это произошло, вам нужно снова написать свои условия if-else после изменения переменной message или просто создать function и вызвать функцию после того, как будет изменен message. Просто посмотрите на код ниже, если имеет смысл. Попытайтесь написать свою функцию по-разному.

var townname = "Azadinos" 
var population: Int = 5422 
var message = "" 
var Haspostoffice: Bool = true 

func printMyVars() { 
    if population < 10000 { 
     message = "with a population of \(population), \(townname) is a small town" 
    } else if population >= 10000 && population < 15000 { 
     message = "with a population of \(population), \(townname) is a medium sized town!" 
    } else { 
     message = "\(townname) is a huge town!" 
    } 
    print(message) 
} 
printMyVars() 
population = 250000 
printMyVars() 

Печатается:

with a population of 5422, Azadinos is a small town 
Azadinos is a huge town! 
+0

Большое спасибо за вашу помощь! Его очень ценят, и хороший урок. –

+0

Пожалуйста, отметьте это как ответ, если это поможет вам исправить вашу проблему. – Santosh

0

Вы должны выполнить оператор if после изменения популяции.

//: Playground - noun: a place where people can play 

import Cocoa 

var str = "Hello, playground" 

var townname = "Azadinos" 
var population: Int = 5422 
var message:  String 
var Haspostoffice: Bool = true 

if population < 10000 { 
    message = "with a population of \(population), \(townname) is a small town" 
} else if population >= 10000 && population < 15000 { 
    message = "with a population of \(population), \(townname) is a medium sized town!" 
} else { 
    message = "\(townname) is a huge town!" 
} 
print (message) 
population = 250000 
print (population) 
// Do If statement after changing population 
if population < 10000 { 
    message = "with a population of \(population), \(townname) is a small town" 
} else if population >= 10000 && population < 15000 { 
    message = "with a population of \(population), \(townname) is a medium sized town!" 
} else { 
    message = "\(townname) is a huge town!" 
} 
print(message) 

Я рекомендую сделать функцию для упрощения кода. Как и следующий код (я не запускал этот код).

//: Playground - noun: a place where people can play 

import Cocoa 

var str = "Hello, playground" 

var townname = "Azadinos" 
var population: Int = 5422 
var message:  String 
var Haspostoffice: Bool = true 

func makeMessage(population: Int) -> String { 
    if population < 10000 { 
     message = "with a population of \(population), \(townname) is a small town" 
    } else if population >= 10000 && population < 15000 { 
     message = "with a population of \(population), \(townname) is a medium sized town!" 
    } else { 
     message = "\(townname) is a huge town!" 
    } 
    return message 
} 

message = makeMessage(population) 
print (message) 
population = 250000 
print (population) 
message = makeMessage(population) 
print(message) 
Смежные вопросы