Друкарня від WE.UA

1. Ініціалізація за замовчуванням

Оголошення з ініціалізатором в Mash Script дозволяє оголосити змінну і одразу ініціалізувати її значенням. Наприклад, оголошення number i {} створить змінну i типу number, і проініціалізує її значенням за замовчуванням для цього типу, яке для числових типів буде 0:

// Звичайне оголошення

int a;
Out.println(a); // UnboundError


// Оголошення з ініціалізатором

int b { };
Out.println(b); // Вихід: 0

Аналогічно, оголошення string name { }; призведе до присвоєння змінній name пустого рядка ‘‘, що є стандартним для рядкових типів.

2. Ініціалізація з параметрами

Ініціалізація з параметрами дозволяє вказати аргументи, які передаються конструктору типу. Наприклад, ви можете вказати значення для змінної типу array в фігурних дужках, як у прикладі { 'Саша' }:

array chars { 'Саша' }; // ["С", ...]

Що еквівалентно ініціалізації за допомогою конструктора array('Саша'):

array chars = array('Саша');

Ініціалізація з параметрами дозволяє вказати не лише один аргумент, але й декілька, в тому числі ключові аргументи. Наприклад:

// Декілька аргументів

Point pt { 10, 20 };

// Ключові аргументи

Person person { name='John', age=30 };

// Змішані аргументи

Lable greeting { 'Hello, world!', root=window };

У першому прикладі, ініціалізація Point p { 10, 20 } передає два аргументи конструктору типу Point. У другому прикладі, Person person { name='John', age=30 }, використовуються ключові аргументи для явного вказання, який аргумент призначений для якого параметру конструктора.

Автор: Chris Ried. Опубліковано на Unsplash

3. Як це реалізовано?

Цей механізм реалізований через автоматичний виклик конструктора об'єкта. Наприклад, оголошення string name { }; по суті еквівалентне string name = string();, де string() - виклик конструктора, який створює новий об'єкт типу string. Такий самий підхід застосовується і для інших типів:

int i {}; // 0
string name {}; // ''
boolean is_prime {}; // false
array arr {}; // []
dict arr {}; // {}
Після виклику MyClass() спочатку викликається метод MyClass.__new__(), який створює та повертає новий екземпляр (об'єкт) цього класу. Після цього автоматично викликається метод __init__ цього екземпляру, який встановлює початкові значення об'єкта.

4. Приклад

У класі Pony використовується метод __init__, щоб ініціалізувати об'єкт з параметрами name і необов'язковим параметром age, який має значення за замовчуванням 0. Метод repr виводить інформацію про об'єкт. У функції main створюються два об'єкти Pony з різними параметрами і викликається метод repr для кожного з них, щоб вивести їхню інформацію.

import { * } from stdl;

class Pony {
  void __init__(name: string, age: int=0) { 
    this._name = name;
    this._age  = age;  
  }

  void repr() {
    Out.println('Name: {this._name}, Age: {this._age}') 
  }
}

void main() {
  Pony pony_1 { "Sunny Hooves" };

  // Name: Sunny Hooves, Age: 0
  pony_1.repr();


  Pony pony_2 { "Sparkle", 7 };

  // Name: Sparkle, Age: 7
  pony_2.repr();
}

Додатковий приклад демонструє створення об'єкта pony_3 класу Pony з параметрами "Whisper" та 3, звичним способом:

Pony pony_3 = Pony("Whisper", 3);

// Name: Whisper, Age: 3
pony_3.repr();

У Mash Script оголошення з ініціалізацією гарантує, що змінна Pony буде саме класом (типом даних), а не функцією чи об'єктом.

Автор: James Harrison. Опубліковано на Unsplash

Читати далі

  1. Змінні (оголошення, ініціалізація, присвоєння).

  2. Константи.

  3. Автоматична ініціалізація параметрів функції.

  4. Оператори +=, -= та інші.

  5. Область бачення змінних.

Статті про вітчизняний бізнес та цікавих людей:

  • Вітаємо з Різдвом Христовим!

    Друкарня та платформа WE.UA вітають всіх наших читачів та авторів зі світлим святом Різдва! Зичимо всім українцям довгожданого миру, міцного здоровʼя, злагоди, родинного затишку та втілення всього доброго і прекрасного, чого вам побажали колядники!

    Теми цього довгочиту:

    Різдво
  • Каблучки – прикраси, які варто купувати

    Ювелірні вироби – це не тільки спосіб витратити гроші, але і зробити вигідні інвестиції. Бо вартість ювелірних виробів з кожним роком тільки зростає. Тому купуючи стильні прикраси, ви вигідно вкладаєте кошти.

    Теми цього довгочиту:

    Як Вибрати Каблучку
  • П'ять помилок у виборі домашнього текстилю, які псують комфорт сну

    Навіть ідеальний матрац не компенсує дискомфорт, якщо текстиль підібрано неправильно. Постільна білизна безпосередньо впливає на терморегуляцію, стан шкіри та глибину сну. Більшість проблем виникає не через низьку якість виробів, а через вибір матеріалів та подальшу експлуатацію

    Теми цього довгочиту:

    Домашній Текстиль
  • Як знайти житло в Києві

    Переїжджаєте до Києва і шукаєте житло? Дізнайтеся, як орендувати чи купити квартиру, перевірити власника та знайти варіанти, про які зазвичай не говорять.

    Теми цього довгочиту:

    Агентство Нерухомості
  • Як заохотити дитину до читання?

    Як залучити до читання сучасну молодь - поради та факти. Користь читання для дітей - основні переваги. Розвиток дітей - це наше майбутнє.

    Теми цього довгочиту:

    Читання
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Romashka
Romashka@Romashka

Створюю інтерпретатор Mash Src

190Прочитань
1Автори
1Читачі
На Друкарні з 16 березня

Більше від автора

  • Mash Script: Рядки, string

    Стаття охоплює різні аспекти роботи з рядками в мові Mash Script, включаючи їхній літеральний запис, методи, рядки-шаблони та інше.

    Теми цього довгочиту:

    Mash Script
  • Mash Script: Оголошення функцій

    Ця публікація охоплює основи роботи з функціями в мові програмування Mash Script: оголошення, використання опціональних параметрів, повернення значень, продвинуту типізацію та створення анонімних функцій.

    Теми цього довгочиту:

    Mash Script
  • Mash Script: Базовий синтаксис

    Опис базової структури програми написаної мовою Mash Script

    Теми цього довгочиту:

    Programming

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: