Страница 2 из 2
Re: Рекурсивный вызов функции
Добавлено: 24 окт 2024, 15:54
Sertik
Да, не понятно. Почему у меня не работает ?
Это работает у Вас ?
Код: Выделить всё
:global CountDown do={
:if ($1>0) do={:put $1; :set $1 ($1-1); execute="[$0 $1]"}
:return "end"
}
или надо обязательно писать execute
script= ?
Re: Рекурсивный вызов функции
Добавлено: 24 окт 2024, 16:29
Sertik
У меня вот это работает рекурсивно:
Код: Выделить всё
:global CountDown do={
:if ($1>0) do={:put $1; :set $1 ($1-1);[[:parse "global $[:pick $0 1 [:len $0]]; [$0 $1]"]];}
:return "end"
}
:put [$CountDown 5]
5
4
3
2
1
end
а это нет:
Код: Выделить всё
:global CountDown1 do={
:if ($1>0) do={:put $1; :set $1 ($1-1); execute script="[$0 $1]"}
:return "end"
}
:put [$CountDown1 5]
5
И без :return тоже не работает.
Код: Выделить всё
:global CountDown1 do={
:if ($1>0) do={:put $1; :set $1 ($1-1); execute script="[$0 $1]"}
:return "end"
}
:put [$CountDown1 5]
5
Так что нет, :parse есть :parse
Re: Рекурсивный вызов функции
Добавлено: 24 окт 2024, 17:05
Brook
Код: Выделить всё
:global CountDown1 do={
:if ($1>0) do={:put $1; :set $1 ($1-1); execute script="[$0 $1]"}
:return "end"
}
Этот код отрабатывает, просто в консоль не выводит. Замените :put на :log info и Вы увидите, что всё работает.
Re: Рекурсивный вызов функции
Добавлено: 24 окт 2024, 19:33
Sertik
Не понял, а почему в консоль то не выводит ?
Re: Рекурсивный вызов функции
Добавлено: 24 окт 2024, 19:49
Brook
Sertik писал(а): ↑24 окт 2024, 19:33
Не понял, а почему в консоль то не выводит ?
Консоль, с точки зрения ОС, это процесс. Когда Вы запускаете команду в консоли, она отрабатывает в контексте этого процесса.
Командой
:execute запускается отдельный процесс, который к консоли уже никак не привязан и поэтому вывести в нее он ничего не может.
Re: Рекурсивный вызов функции
Добавлено: 24 окт 2024, 20:37
Sertik
OK, да, забыл. Где то читал об этом.