Я никогда не работал со Swift, но, увидев ваш пример кода, самое близкое, что я могу вспомнить, это Анонимные типы .Они позволяют структурировать новый объект при объявлении переменной и создании экземпляра ее объекта / значения без явного объявления класса / структуры.Пример:
var student = new
{
Name = "John",
LastName = "Doe",
Age = 37,
Hobbies = new [] { "Drinking", "Fishing", "Hiking" }
};
Затем вы можете получить доступ к полям как student.LastName
, student.Age
и так далее.Типы свойств внутри анонимного типа определяются компилятором (но вы можете использовать приведение, если вы хотите принудительно задавать определенные типы для некоторого свойства).
Ваш пример может быть смоделирован примерно так:
var answersArray = new[] {
new { Title = "First answer", IsCorrect = false },
new { Title = "Second answer", IsCorrect = true },
new { Title = "Third answer", IsCorrect = false },
new { Title = "Fourth answer", IsCorrect = false },
};
var questionData = new { Question = "To be or not to be?", Answers = answersArray };
И к данным можно было бы обращаться некоторым образом, например:
Console.WriteLine(questionData.Question);
foreach (var answer in answersArray)
Console.WriteLine(answer.Title);
Проблема с анонимными типами заключается в том, что созданные объекты доступны только для чтения , поэтому значения, полученные свойствамианонимно типизированного объекта не может изменяться после создания экземпляра объекта.
Ключевое слово using
может использоваться в тех случаях, когда у вас уже есть определенный класс, и вы хотите указать псевдоним для этого класса,как в:
// The "HttpClient" class will now have an alias of "MyClient"
using MyClient = System.Net.Http.HttpClient;
Этот подход, очевидно, требует, чтобы класс, для которого вы создаете псевдонимы, был предварительно определен, поэтому я не знаю, соответствует ли он вашим потребностям.
После этих соображений яЯ бы сказал, что наилучшей практикой (и моим советом) было бы на самом деле объявлять классы и / или структуры в вашем коде для представления данных, которые вы используете.вместо того, чтобы пытаться подражать Свифту typealias
.