簡體   English   中英

[Swift]如何初始化一個 class 期望一個帶有 ReadLine 的字符串?

[英][Swift]How do I initialize a class expecting a String with a ReadLine?

我正在學習 swift 並且我正在嘗試通過傳遞用戶輸入定義的名稱字符串來初始化播放器 object 但我必須解開它並解開它會拋出錯誤。 這是一項任務,所以我認為我不允許將 Player 中的參數更改為可選的字符串。 有沒有辦法使這項工作? 如果有怎么辦?

class PlayGame{
private var player:Player

public init(){
   
print("Welcome, please enter your name: ")
    if let str = readLine()
    {
        self.player = Player(name:str)
    }
}

目前得到一個'從 initiazlizer 返回而不初始化所有存儲的屬性'

class Player{
private var name:String

public init(name:String)
{
    self.name = name
}

這就是我正在嘗試的,它的失敗

這里

public init(){

    print("Welcome, please enter your name: ")
    if let str = readLine()
    {
        self.player = Player(name:str)
    }
}

如果“str”為“nil”,則播放器未初始化

我確實修好了

public init(){
    print("Welcome, please enter your name: ")
    if let str = readLine()
    {
        self.player = Player(name:str)
    } else {
        player = Player(name:"default")
    }
}

我可以使用“零合並運算符”(也稱為“默認運算符”)。

class PlayGame {
    private var player: Player

    public init() {
        print("Welcome, please enter your name: ")
        let str = readLine() ?? "unnamed"
        self.player = Player(name: str)
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM