Итак, я в Xcode и программирую небольшую программу от друга.Различные типы одного и того же объекта
Я хочу инициализировать несколько экземпляров объекта, поместить их в массив и затем перебрать через него (через функцию, которая возвращает строку). Каждый объект добавляет некоторый текст к этой строке, когда он повторяется, в зависимости от переменных объекта.
Скажем, класс - это дерево. Переменные в классе - это имя (строка), height (int) и hasLeaves (bool) (на данный момент у него на нем есть листья или нет). Я мог бы легко печатать:
«Это имя что высота метров в высоту и имеет листья
Проблема в том, что я хочу, чтобы строка будет немного отличаться в зависимости. на какой тип дерева это, как это:.
дуб (название) большой и lifeful, это высота метров в высоту и имеет листья.
Яблони (имя) несет яблоки, это высота метров в высоту и имеет листья .
Если вы когда-нибудь посетить Швецию вы должны проверить пихты (имени), они высоту высокие и нет листьев.
Я не хочу, чтобы вы написали мне код, но дайте мне ключ. Я не знаю, что искать. Я думал о создании подкласса для каждого дерева, но каждый подкласс появлялся только один раз в программе, и я не знаю, нужно это или нет.
Как вы признаете, мне трудно даже сформулировать этот вопрос, но если вы понимаете мои намерения, я рад любой подсказке, которую я могу получить.
Edit: Так что это моя попытка показать это в коде:
Класс:
class tree {
var treeHeight: Int?
var treeWidth: Int?
var hasLeaves: Bool
var treeString: String
init (height: Int?, width: Int?, leaves: Bool, theString: String) {
self.treeHeight = height
self.treeWidth = width
self.hasLeaves = leaves
self.treeString = theString
}
}
Основная функция:
var oak: tree = tree(height: 1, width: 2, leaves: true, theString:"Oh, the mighty oak")
var appleTree: tree = tree(height: 1, width: 2, leaves: false, theString: "Yummy Apples")
var treeArray: Array = [oak, appleTree]
var resultString = "This is the stories of the trees: "
for tree in treeArray {
if tree.hasLeaves == true {
resultString = resultString + tree.theString
}
}
Итак, я хотите, чтобы строка, добавленная в «resultString», была другой, dependi ng на каком дереве оно есть, но я не хочу устанавливать эту строку в инициализации объекта, а скорее из того, что это «вид» дерева. Это облегчает понимание?
Я хочу, чтобы строка (treeString) была статичной в зависимости от того, какой «вид» дерева это. Так что, если это дуб, строка всегда «О, дуб могучий».
Как вы собираетесь «инициализировать несколько экземпляров объекта»? Собираетесь ли вы скорректировать значения? Прочитать их из файла? Покажите нам код, который вы написали. –
Вам лучше разобраться в том, как это решить, написать код и разместить его здесь, подчеркнув, что вы думаете, что не работает должным образом - ваш вопрос, как и сейчас, слишком обобщен, и вскоре он может быть закрыт для не в тему – Antonio
Привет, спасибо за ваши ответы. Скоро я отправлю код. Для вас, Роб, я мог бы неправильно использовать слова, я только начал программировать несколько месяцев назад. – Mattias