Друкарня від 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. Область бачення змінних.

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

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

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

11Довгочити
258Перегляди
1Підписники
На Друкарні з 16 березня 2024

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

  • Mash Script: Рядки, string

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

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

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

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

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

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

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

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

    Programming

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

  • Будемо робити застосунок для обліку фінансів

    Знайома вам ситуація, коли кошти, які мали бути витрачені на велику покупку якимось чином зникали до моменту цієї самої покупки? Болісний момент, який може стати тригером, що приведе вас до кращого життя. Теоретично. Але щоб це сталося, потрібно якось вести історію витрат.

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

    Розробка
  • Розробляю свій застосунок (частина 1)

    Ця історія розпочалась з того, що я шукала собі додаток для трекання звичок. Переривши майже весь Плей Маркет, я зрозуміла, що жоден із завантажених додатків мені не підходить.

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

    Стартап

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

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

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

  • Будемо робити застосунок для обліку фінансів

    Знайома вам ситуація, коли кошти, які мали бути витрачені на велику покупку якимось чином зникали до моменту цієї самої покупки? Болісний момент, який може стати тригером, що приведе вас до кращого життя. Теоретично. Але щоб це сталося, потрібно якось вести історію витрат.

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

    Розробка
  • Розробляю свій застосунок (частина 1)

    Ця історія розпочалась з того, що я шукала собі додаток для трекання звичок. Переривши майже весь Плей Маркет, я зрозуміла, що жоден із завантажених додатків мені не підходить.

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

    Стартап