Функции обновлены. Теперь RikaScript поддерживает функции, передающие параметры и возвращающие значения. Также поддерживается рекурсия, но не замыкания.
Что было исправлено:
if xxx true
.Что обновлено:
func outer(){
func inner(){}
}
inner() // ошибка, потому что нет внутренней функции
outer()
inner() // ошибки нет, потому что теперь есть внутренняя функция
Другие исправления были забыты.
func add(a, b){
a + b
}
add(1, 2) // нормально
add(1 + 1, 2) // нормально
add(add(1, 2), 2) // взрыв на месте
log(add(1, 2)) // спираль в небо
add(1, 2)
log(result) // 3
:ENTER:()
и :EXIT():
для управления контекстом вручную. Engine автоматически управляет контекстом при использовании синтаксиса call в операторах if и while.Обновление библиотек и операций со строками
На самом деле, целью обновления синтаксического сахара для set было позволить + = выполнять конкатенацию строк.
Используйте set для установки переменных:
set message = 'Hello World'
log(message) // Hello World
set num = 10
set num += 5
log(num) // 15
Обратите внимание, что теперь для доступа к переменным не требуется добавлять префикс @. Просто напишите имя переменной. Конечно, за это приходится платить тем, что строки должны быть заключены в кавычки.
Теперь RikaScript может обрабатывать вложенные вызовы функций и даже вычисления в инфиксной записи:
log(1 + int(10 ** 0.5)) // INFO 4, сначала вычисляется 10 ^ 0,5, затем берётся целая часть результата, потом прибавляется 1
Существующие определения функций с помощью func не изменились, но синтаксический сахар позволяет упростить использование if и while:
set i = 0
while i <= 10{
if i % 2 == 0{
log(i,'is an even number') // вывод чётных чисел!
}
set i += 1
}
Фактически, set — это синтаксический сахар. set a = 1 преобразуется в 'a' = 1. Поэтому, если вы не против, вы можете заменить левую часть присваивания на строку. Когда библиотеки строк будут полностью реализованы, вы сможете получать доступ к различным переменным через них.
Причина такого странного поведения заключается в том, что RikaScript использует словарь Dictionary<string, object> для хранения данных.
Комментарии в RikaScript обозначаются символами //. Однако из-за проблем с производительностью комментарии пока не работают должным образом. На данный момент комментарии можно использовать только в конце строки с выражением. Их нельзя использовать в начале строк if, while или func. Это связано с тем, что обработка комментариев происходит на уровне Runtime, а Engine не может их обработать.
RikaScript — это язык сценариев, который не использует лексический анализ или компиляцию. Поэтому синтаксические требования могут показаться вам жёсткими:
Их слишком много, чтобы перечислять здесь.
Изменения коснулись способа загрузки библиотек, способа хранения функций и структуры кода для управления библиотеками.
[Library("test","v2.33","Здесь можно указать информацию о библиотеке")]
public class Test : ScriptLibBase{
}
[Method(Name = "hello",Help = "Поздороваться")]
public void Hello(object name){
Runtime.Logger.Info("Hello " + name);
}
// RS вызывает: hello("rika")
Благодаря реализации Help в атрибутах Method и Library, необходимость в добавлении помощи вручную отпала. ScriptLibBase предоставляет метод help для отображения всей информации или поиска справки.
Методы, предварительно кэшированные в каждом классе библиотеки, больше не хранятся непосредственно в каждой библиотеке. Вместо этого они хранятся в Runtime и дублируются дважды. Ключом является чистое имя метода плюс количество параметров, например, hello^1 или libraryname.hello^1.
Если в атрибуте Method указано Keep = true, то после импорта библиотеки методы без префикса библиотеки не могут быть переопределены последующим импортом.
Все методы в стандартных библиотеках имеют атрибут Keep = true и не могут быть переопределены. В конструкторе класса библиотеки можно получить экземпляр LibInfo, вызвав атрибут Info. Вызов AddInfo у Info позволяет добавить справочную информацию.
В библиотеке std используется синтаксис типа std.help(«тип») для поиска информации, связанной с «типом».
Для экспериментальной программы RikaScript добавлено приглашение ввода RS >.
Добавлена команда help для отображения всей справочной информации текущей библиотеки по умолчанию.
Синтаксис if @var return позволяет не только выйти из текущего выполняемого метода, но и выйти из файла, выполняемого через exec.
Изменён конструктор базового класса библиотеки: теперь он принудительно устанавливает псевдоним по умолчанию для библиотеки и требует добавления информации о версии.
Добавлено больше комментариев.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )