Создание экземпляра, только если условие удовлетворяет - PullRequest
0 голосов
/ 29 июня 2018

Я создаю программу в Swift 4, которая имеет два класса StockHolding (Parent) и ForeignStockHolding (Child). Мне нужно создать некоторые объекты этих классов и добавить их в массив, который я сделал вручную, как это:

var stocksInArray: [StockHolding] = [] //creating array of type StockHolding
var newSIA = StockHolding()

//=========New StockHolding Object===========
    **newSIA = StockHolding()**
    newSIA.purchaseSharePrice = 2
    newSIA.currentSharePrice = 3
    newSIA.numberOfShares = 5
    newSIA.companyName = "A"

    //Appending the Array
    stocksInArray.append(newSIA)

//=========New ForeignStockHolding Object===========
    **newSIA = ForeignStockHolding()**
    newSIA.purchaseSharePrice = 6.10
    newSIA.currentSharePrice = 99.51
    newSIA.numberOfShares = 310
    newSIA.companyName = "D"

    //Appending the Array
    stocksInArray.append(newSIA)

Следующая часть состоит в том, чтобы спросить пользователя, сколько акций он хочет и какого типа (StockHolding или ForeignStockHolding), и в соответствии с выбором мне нужно создать объект и добавить его в массив. Я пытался сделать следующее, но это не работает, так как объекты еще не созданы, потому что они находятся внутри условия, и я получаю ошибки.

for stocks in 1...maxVal {
        print("Type of stock \(stocks): 1.Local  2.Foreign " )

        input = readLine()!
        let s1 = Int(input)!

        if(s1 == 1){  var newSIA = StockHolding()
            runOnCondition()
        }
        else if (s1 == 2){ var newSIA = ForeignStockHolding()
            print("Enter Conversion Rate")
            input = readLine()!
            let cr = Float(input)!
            newSIA.conversionRate = cr
            runOnCondition()
        }
    }

Я даже не знаю, делаю ли я все неправильно

1 Ответ

0 голосов
/ 30 июня 2018

Я думаю, что это должно работать, если вы объявляете переменную вне условий, используя родительский класс, например:

for stocks in 1...maxVal {
    print("Type of stock \(stocks): 1.Local  2.Foreign " )

    input = readLine()!
    let s1 = Int(input)!
    var newSIA: StockHolding

    if(s1 == 1){  newSIA = StockHolding()
        runOnCondition()
    }
    else if (s1 == 2){ newSIA = ForeignStockHolding()
        print("Enter Conversion Rate")
        input = readLine()!
        let cr = Float(input)!
        newObj.conversionRate = cr
        runOnCondition()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...