Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Новое в PascalABC.Net

08.08.2018, 22:17. Показов 1102. Ответов 3

Студворк — интернет-сервис помощи студентам
Я буду сюда постить новые фичи этого языка (интересно, чем все закончится). Если Вы знаете какие-то новые фичи, то пожалуйста, отпишитесь здесь.

Добавлено через 5 минут
Расширенные свойства
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
uses System;
 
type
  IPrintable = interface
    function GetStringRepresentation(): string;
    
    procedure Print();
    
    procedure Println();
  end;
  
type
  TBox = class(IPrintable)
  private
    fWidth, fHeight: integer;
    
  public
    property Width: integer
      read fWidth
      write
      begin
        if (value < 0) then
          raise new ArgumentException();
        fWidth := value;
      end;
      
    property Height: integer
      read fHeight
      write
      begin
        if (value < 0) then
          raise new ArgumentException();
        fHeight := value;
      end;
    
    constructor Create(width, height: integer) := (self.Width, self.Height) := (width, height);
    
    function GetStringRepresentation(): string := $'({Width}, {Height})';
    
    procedure Print() := Write(GetStringRepresentation());
    
    procedure Println() := Writeln(GetStringRepresentation());
  end;
 
begin
  (new TBox(-1, 2)).Println();
end.
Как и в C# в сеттере можно использовать неявно объявленный параметр value.

Добавлено через 3 минуты
Интерполированные строки
Pascal
1
2
3
4
5
uses System;
begin
  var (X, Y) := ReadInteger2();
  Writeln($'X = {X}, Y = {Y}'); // То же самое, что и WritelnFormat('X = {0}, Y = {1}', X, Y);
end.
Как и в C# теперь появилась возможность использовать интерполированные строки, являющиеся синтаксическим сахаром, насколько помню, над string.Format.

Добавлено через 10 минут
match-with
Конструкция match-with для сопоставления типов (case по типам, грубо говоря):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type
  TA = class
  end;
  
  TB = class(TA)
  end;
 
begin
  var X := new TB();
  match X with
    TB(var b): Writeln('X является экземпляром класса TB');
    TA(var a): Writeln('X является экземпляром класса TA'); // TA - тип к которому приводится X; a - переменная, в которую записывается результат приведения.
  end;
end.
Добавлено через 8 минут
Пример использования match-with:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
uses System;
 
var
  X: array of integer;
 
begin
  SetLength(X, 1);
  match X with
    &Array(var a): Writeln('X является массивом');
    IEnumerable<integer>(var b): Writeln('X является IEnumerable<integer>');
  end;
end.
2
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.08.2018, 22:17
Ответы с готовыми решениями:

В чем разница PascalABC.net и PascalABC
Скажите в чем разница PascalABC.net И PascalABC. Помню когда-то давно программы работающие в PascalABC у меня не работали в .net

Установится ли PascalABC.NET на систему, где установлен только .NET 4.6.1?
Привет всем. Вопрос, собственно, озвучен выше. Конкретнее: есть компьютер со свежеустановленной Win10 x64, на которой присутствует...

Перевести с PascalABC.net на JS
Помогите перевести на JS c PascalABC.Net. Пробывал сам перевести, считает не так как на Pascal Запись в файл не нужно. считаю при входных...

3
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
18.08.2018, 14:08  [ТС]
Пространства имён (те же самые модули, только немного по-другому работают).
Объявление пространства имён:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace ИмяФайлаПространстваИмён;
interface
  { раздел интерфейса }
 
implementation
  { раздел реализации }
 
initialization
  { раздел инициалиализации }
 
finalization
  { раздел финализации }
 
end.
Точнее - всё как в модуле. Сокращенный вариант объявления:
Pascal
1
2
3
namespace ИмяФайлаПространстваИмён;
 
end.
Подключение пространства имён (файла его содержащего) производится так:
Pascal
1
{$includenamespace ИмяФайлаПространстваИмён}
Но: использование этой директивы в пространствах имён запрещено. При попытке это сделать:
NS.pas(x) : Использование includenamespace в модулях недопустимо

Не по теме:

Но, разработчики отказались от публикации этой фичи, так как:

...там интеллисенс не сделан.

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33171 / 21462 / 8225
Регистрация: 22.10.2011
Сообщений: 36,820
Записей в блоге: 10
18.08.2018, 14:17
И опять же, объясните мне кто-нибудь понятным языком, зачем в Паскале, при наличии модулей, нужны пространства имен? Что это даст?
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
18.08.2018, 15:12  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Что это даст?
Возможность хвастаться тем, что они есть в PascalABC.Net. Если серьезно - то, лично мне, не ясно, как это может пригодится, если пространства имён повторяют модули в своем функционале. Тем более, они более ограничены, чем в C#. Разнести, например, классы по разным файлам одного пространства имён не получится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2018, 15:12
Помогаю со студенческими работами здесь

Проект в PascalABC.NET
Пишу программу. Сложность в том что программа несколько различных стадий. Всё это можно было бы расфасовать по разным юнитам, но...

VK.API на PascalABC.NET
Доброго времени суток, написал модуль для PascalABC.NET, с помощью которого можно использовать vkapi. Вот он: library VKAPI; ...

Превращение PascalABC.Net в C#
Зачем разработчики превращают PascalABC.Net в подобие C#? В частности, зачем в разрабатываются пространства имён, если в Паскале уже есть...

PascalABC.NET Записи
Помогите переделать по процедуры и функции:cry: type spisok = record surname: string; name: string; otchestvo:...

PascalABC.NET и Excel
Программа должна искать в тексте из файла .xlsx значение,которое перед этим ввел пользователь. assign(f,'D:\Дані.xlsx'); reset(f);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
PowerShell и онлайн сервисы. Валюта (floatrates.com руб.)
iNNOKENTIY21 11.11.2025
PowerShell функция floatrates-rub Примеры вызова: # Указанная валюта 'EUR' floatrates-rub -Code 'EUR' # Список имеющихся кодов валют floatrates-rub -Available function floatrates-rub {
PowerShell и онлайн сервисы. Погода (RP5.ru)
iNNOKENTIY21 11.11.2025
PowerShell функция Get-WeatherRP5rss для получения погоды с сервиса RP5 Примеры вызова Get-WeatherRP5rss с указанием id 5484 — Москва (восток, Измайлово) и переносом строки:. . .
PowerShell и онлайн сервисы. Погода (wttr)
iNNOKENTIY21 11.11.2025
PowerShell Функция для получения погоды с сервиса wttr Примеры вызова: Погода в городе Омск с прогнозом на день, можно изменить прогноз на более дней, для этого надо поменять запрос:. . .
PowerShell и онлайн сервисы. Валюта (ЦБР)
iNNOKENTIY21 11.11.2025
# Получение курса валют function cbr (] $Valutes = @('USD', 'EUR', 'CNY')) { $url = 'https:/ / www. cbr-xml-daily. ru/ daily_json. js' $data = Invoke-RestMethod -Uri $url $esc = 27 . . .
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений Всем привет. А вот мой компьютер, переделанный из ноутбука. Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru