Неизменяемые структуры данных

Описание структуры

namespace Test;

use Runtime.CoreStruct;

struct User extends CoreStruct
{
	string short_name = "";
	string full_name = "";
	string nick_name = "";
	string Collection emails = "";
}

Создание объекта

User user = new User
{
	"short_name": "John",
	"full_name": "John Smith",
	"nick_name": "Jey",
	"emails": [ "jey@example.com", "jey@localhost", ],
};

Изменения объекта

/* Будет пересоздан объект user, с новым свойством */
user <= short_name <= "John2";

/* Будет создан объект user2, с новыми свойствами */
User user2 = user.copy
{
	"full_name": "John Williams",
	"emails": user.pushIm("willy@example.com") 
}

Вложенные структуры

namespace Test;

use Runtime.CoreStruct;

struct Task extends CoreStruct
{
	string name = "";
	User user = null;
}

Создание объекта

Task task = new Task
{
	"name": "Task 1",
	"user": new User
	{
		"short_name": "John",
		"full_name": "John Smith",
		"nick_name": "Jey",
		"emails": [ "jey@example.com", "jey@localhost", ],
	}
};

Изменение вложенного объекта

/* Изменение имени, ответственного за задачу */
task <= user <= short_name <= "John2";