API Basic Concatenation - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
String + / &
ClassicUO • Basic
Соединяйте текст через + или совместимую запись Basic &. Числа явно преобразуйте через CStr, прежде чем добавлять в сообщение подписи, количество или координаты.
Точный синтаксис
leftText + rightText
leftText & rightText
"label" & CStr(number)
Параметры
leftText— Левый текст: литерал, переменная String либо преобразованный в текст результат функции.rightText— Правый текст. CStr(number) преобразует число; CStr(Unit) даёт пустую строку. Пробелы, двоеточия и другие разделители указывайте сами.
Возвращает
String, если оба операнда String. Флаг успешности не возвращается. В этом движке & преобразуется в + и наследует его правила: два числа складываются численно, поэтому 2 & 3 даёт Integer 5. Смешение String/числа вызывает ошибку. Это отличается от неявного преобразования текста в VB.
Поведение
- Обе стороны вычисляются и соединяются по порядку. Цепочка соединений идёт слева направо. Числовой расчёт заключайте в скобки и преобразуйте его результат перед соединением.
- Разделители, пробелы, кавычки и переводы строки автоматически не добавляются. & внутри строкового литерала остаётся символом амперсанда. Логический токен && сохраняет значение AND и не соединяет текст.
- CStr форматирует числа независимо от языка клиента, с точкой в дробях. Преобразование и соединение ничего не печатают и не отправляют: при необходимости передайте полученную String следующему API.
- Строки неизменяемы: соединение создаёт новое значение и не меняет исходные переменные. Постоянное наращивание большой строки копирует её содержимое; формируйте нужный вывод, а не весь отчёт заново на каждой итерации цикла.
Примеры
1. Добавить количество к подписи
# amount=50 имеет вид Integer. CStr(amount) даёт "50". Литерал "Items: " содержит двоеточие и пробел в конце. Main возвращает "Items: 50"; автоматической печати нет.
Option Explicit On
SUB Main()
VAR amount = 50
RETURN "Items: " & CStr(amount)
END SUB
Разбор параметров и выполнения:
amount=50 имеет вид Integer. CStr(amount) даёт "50". Литерал "Items: " содержит двоеточие и пробел в конце. Main возвращает "Items: 50"; автоматической печати нет.
2. Полная функция форматирования
# Label получает name="ore", amount=3. Соединяет имя, явно заданное двоеточие и CStr(amount). Полностью приведённая функция возвращает Main строку "ore:3"; её можно вызывать с другими именами и количествами.
Option Explicit On
FUNCTION Label(name, amount)
RETURN name + ":" + CStr(amount)
END FUNCTION
SUB Main()
RETURN Label("ore", 3)
END SUB
Разбор параметров и выполнения:
Label получает name="ore", amount=3. Соединяет имя, явно заданное двоеточие и CStr(amount). Полностью приведённая функция возвращает Main строку "ore:3"; её можно вызывать с другими именами и количествами.
3. Сначала вычислить, затем соединить
# CStr(2+3) сначала вычисляет 5, затем преобразует в "5". Второй литерал содержит точку с запятой, пробелы и A&B — эти символы сохраняются. Main возвращает "Total: 5; literal: A&B".
Option Explicit On
SUB Main()
RETURN "Total: " & CStr(2 + 3) & "; literal: A&B"
END SUB
Разбор параметров и выполнения:
CStr(2+3) сначала вычисляет 5, затем преобразует в "5". Второй литерал содержит точку с запятой, пробелы и A&B — эти символы сохраняются. Main возвращает "Total: 5; literal: A&B".