mavka-ukr / mavka

Сучасна українська мова програмування
https://мавка.укр
Other
53 stars 4 forks source link

Пропозиція: Словник #6

Closed harnyk closed 1 year ago

harnyk commented 1 year ago

Пропозиція

Асоціативний словник (мапа, хеш).

х = Словник()
х.встановити("оце", "яблуко")
х.встановити("ото", "вишня")
друк(х.має("оце"))   ;; так
друк(х.має("абощо"))   ;; ні
друк(х.отримати("оце"))   ;; "яблуко"
друк(х.ключи())    ;; Список("оце", "ото")
друк(х.отримати("кря"))   ;; пусто
друк(х.розмір())    ;; 2
х.видалити("ото")

перебрати х як ключ, значення
  друк(ключ, значення)
кінець

Альтернатива методам отримати/встановити, використовується гіпотетичний оператор індексного доступу .():

х = Словник()
х.("оце") = "яблуко"
друк(х.("оце"))

Опис параметризованого типу словника, використовуючи гіпотетичний оператор узагальнення !(Т0,Т1,...):

с Словник!(текст, число) = Словник()
kohutd commented 1 year ago

На рахунок "ключі", можливо це назвати краще "слова" :thinking:

harnyk commented 1 year ago

А значення як тоді назвати?

kohutd commented 1 year ago

Значення не треба перейменовувати в такому випадку, але давайте запитаємо в чаті Мавки

kohutd commented 1 year ago

До речі, цікавий вигляд Словника з типами, але думаю чи не буде він заважати оператору заперечення ! який теж має бути в мові

harnyk commented 1 year ago

Я думав у нас є оператор не

kohutd commented 1 year ago

Я бачу такі способи перевіряти чи ні:

1 варіант (який зараз):

якщо користувач.має_дозволи не так
  ;;
кінець

1.5 варіант (який зараз):

якщо користувач.має_дозволи рівно ні
  ;;
кінець

2 варіант (який планується додати)

якщо !користувач.має_дозволи
  ;;
кінець

3 варіант (який може бути, але виглядає дивно)

якщо не користувач.має_дозволи
  ;;
кінець
kohutd commented 1 year ago

Словник втілено в такому вигляді: https://мавка.укр/docs/maps

Залишилось дописати дії для керування ним.

kohutd commented 1 year ago

До словника додано базові необхідні дії для роботи. Параметризовані словники в першій версії робити не будемо - залишимо це на другу, якраз буде час нормально обдумати.

Закриваю це issue. Якщо є пропозиції, що до словника ще можна додати, прохання створити нове issue.