Автокликер Clickermann :: Форум
Основной раздел => Предложения => Topic started by: Сергей on October 19, 2012, 01:32:12 PM
-
Просто мастхев. Сейчас код можно разбить на части лишь подпрограммами, но они значений возвращать не могут. С помощью функций можно будет писать сторонние библиотеки расширяющие функционал, не внося изменения в саму реализацию языка.
Примерный синтаксис:
FUNC FACTORIAL($n)
$i = 1
$result = 1
FOR($i, $i < ($n + 1))
$result = $result * ($i - 1)
END_CYC
RETURN $result
END_FUNC
Несколько аргументов:
FUNC POW($value, $power)
$i = 1
$result = $value
FOR($i, $i < $power)
$result = $result * $value
END_CYC
RETURN $result
END_FUNC
Использование:
$value = FACTORIAL(7)
print($value)//5040
$value = POW(3, 3)
print($value)//27
-
Ап.
-
да хорошая тема хорошая. что апать, не жигули же продаешь.
для ее реализации надо посидеть подумать. в рамках текущего парсера с наскоку такое не прикрутить.
-
Такая возможность добавляет гибкости при написании программ.
Примером может служить Lua, в нём пользовательские функции с входящими и возвращаемыми значениями реализованы превосходно.
Здесь же этот метод я реализую через подпрограмму, которая, в итоге, присваивает значение собственной переменной. Перед проходом подпрограммы указываю переменную с "входящими" данными. После прохода обращаюсь к "возвращаемой" переменной, вставляю её в выражения.
// объявления
$varArgument1 = 0
$itogF1 = 0
// библиотека
sub ( Function1 )
if ( $varArgument1 = 2 )
$itogF1 = rnd(1,9)
else
$itogF1 = 0
end_if
end_sub
// исполнение
$varArgument1 = 2 // входящие данные
gosub ( Function1 ) // присвоение внутри функции
if ( $itogF1 > 0 ) // $itogF1 - возвращаемая переменная
***
-
Вот и приходится использовать такой костыль. C луа сильно не знаком, но язык очень мощный, да.
Кстати идеалом скриптового языка для меня является Pawn, он максимально просто и логичен.
Статическая типизация, функциональная парадигма, однопоточность. Никаких тебе асинхронных вызовов, потоков, внезапных смен типов. Компилируемый в байткод, а значит достаточно быстрый.
-
Ознакомлюсь по ближе с Пешкой, благодаря твоей рекомендации )
-
+1
-
предлагаю добавить возможность процедурам писать в $_return1, #_return2
-
ну а чем тебе не нравится возможность писать в произвольную переменную из процедуры собственно?
-
тоже самое в принципе, разве что, более фомализировано получится и реализация такой фичи в интерпретаторе по идее не должна быть накладной