2017-06-14 45 views
1

我只是在Xcode的操場上測試一些代碼,我試圖學習如何使用if語句。另外我怎樣才能糾正這個代碼?編譯時遇到一些錯誤。其中之一是「無法賦值:'& &'返回不可變的值」。是否有可能使代碼在更正確的同時更具可讀性和更簡單?我怎樣才能糾正這個代碼,同時使其更簡單

是我寫的代碼:

var minutes = 10 

var name = "Marcus" 

var hours = 2 

var status : String = " " 

if minutes = nil && hours = !nil { 

    status = "\(name) spent \(hours) hrs online" 

} else if minutes = !nil && hours = nil { 

    status = "\(name) spent \(minutes) mins online" 

} else if minutes = !nil && hours = !nil { 

    status = "\(name) spent \(hours) hrs & \(minutes) mins online" 

} 

print(status) 

回答

2

如果定義hoursminutes這樣,他們將永遠是零所以不需要檢查。你必須將它們聲明爲可選項。和switch提供了一個乾淨的解決您想要的:

var hours: Int? = 2 
var minutes : Int? = 10 
var name = "Marcus" 

var status = "" 
switch (hours, minutes) { 
case (nil, nil): 
    status = "both hours and minutes cannot be nil" 
case (_, nil): 
    status = "\(name) spent \(hours!) hrs online" 
case (nil, _): 
    status = "\(name) spent \(minutes!) mins online" 
default: 
    status = "\(name) spent \(hours!) hrs & \(minutes!) mins online" 
} 

print(status) 
1

使用=代替==導致一些錯誤。

不是測試nil當變量不是可選的也會觸發警告。

下面是一些代碼,編譯在那裏你可以玩的,現在的邏輯:

var minutes: Int? = 10 
var name: String? = "Marcus" 
var hours: Int? = 2 
var status : String = "Hello" 

if minutes == nil && hours != nil { 
    status = "\(name) spent \(hours) hrs online" 
} else if minutes != nil && hours == nil { 
    status = "\(name) spent \(minutes) mins online" 
} else if minutes != nil && hours != nil { 
    status = "\(name!) spent \(hours!) hrs & \(minutes!) mins online" 
} 

print(status) 
相關問題