Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Как передать две функции в функцию?

Страниц (1): [1]
 

1. Martin - 29 Декабря, 2022 - 06:16:45 - перейти к сообщению
Пытаюсь передать в функцию danet() две другие, но не могу понять где ошибка всегда вызывает вторую функцию.

CODE:
danet(ff,ff2);

function danet(string t1, string t2) {
loop() {
if(GetM()=="Да") {t1();break;}
if(GetM()=="Нет") {t2();break;}
}
}

function ff() {messagebox("ДА")}
function ff2() {messagebox("НЕТ")}

function GetM() {
int m=random(1,2);
if(m==1) {return Да}
if(m==2) {return Нет}
}
2. neba2101 - 29 Декабря, 2022 - 08:05:18 - перейти к сообщению
CODE:
danet(ff,ff2);

function danet() {
loop() {
if(GetM()=="Да") {messagebox("Да");break;}
if(GetM()=="Нет") {messagebox("Нет");break;}
}
}

function GetM() {
int m=rand(1,3);
if(m==1) {return "Да";}
if(m==2) {return "Нет";}
}


CODE:
string ff="Да";
string ff2="Нет";

danet(ff,ff2);

function danet(string g, string g2) {
messagebox(g);
messagebox(g2);
}
3. Zireael - 29 Декабря, 2022 - 16:44:32 - перейти к сообщению
 Цитата:
не могу понять где ошибка всегда вызывает вторую функцию

В коде много синтаксических шибок, он вообще не должен запускаться, тем более правильно работать.
В функцию можно передать параметры, исходя из них вызвать другую функцию.
Напишите что хотите сделать, поможем с кодом.
4. Martin - 30 Декабря, 2022 - 04:44:06 - перейти к сообщению
Zireael , Нужно в зависимости от полученного ответа в переменной запустить одну из двух функций. Нужна функция поместив в которую две функции запустилась одна из них.

Чтобы не громоздить такое

CODE:

danet();
//тут идет другой код
danet2();
//тут идет другой код
danet3();
//danet...100();

function danet() {
loop() {
if(GetM()=="Да") {messagebox("Запустить функцию1");break;}
if(GetM()=="Нет") {messagebox("Запустить функцию2");break;}
}
}

function danet2() {
loop() {
if(GetM()=="Да") {messagebox("Запустить функцию3");break;}
if(GetM()=="Нет") {messagebox("Запустить функцию4");break;}
}
}

function danet3() {
loop() {
if(GetM()=="Да") {messagebox("Запустить функцию1");break;}
if(GetM()=="Нет") {messagebox("Запустить функцию8");break;}
}
}

//и т.д.

function GetM() {
int m=rand(1,3);
if(m==1) {return "Да";}
if(m==2) {return "Нет";}
}


а было такое
CODE:
danet(функция1, функция2)
5. Zireael - 30 Декабря, 2022 - 04:58:00 - перейти к сообщению
CODE:
danet(0);
danet(2);
danet(3);


function danet(int num)
{
string resultGem = GetM();

if(num==0)
{
if(resultGem=="Да") {messagebox("Запустить функцию1");}
if(resultGem=="Нет") {messagebox("Запустить функцию2");}
return;
}

if(num==2)
{
if(resultGem=="Да") {messagebox("Запустить функцию3");}
if(resultGem=="Нет") {messagebox("Запустить функцию4");}
return;
}

if(num==3)
{
if(resultGem=="Да") {messagebox("Запустить функцию1");}
if(resultGem=="Нет") {messagebox("Запустить функцию8");}
return;
}
}


function GetM() {
int m=rand(1,3);
if(m==1) {return "Да";}
if(m==2) {return "Нет";}
}
6. Martin - 30 Декабря, 2022 - 05:07:50 - перейти к сообщению
Zireael , Визуально сложно в коде такое воспринимается
CODE:
danet(0);
danet(2);
danet(3);

Не понятно каким функциям задаются вопросы. И нужно все комбинации при таком способе задавать а при 100 функциях это больше 10000 описать нужно будет.

Нельзя до такого написания упростить? Чтобы функция принимала две функции?
CODE:
danet(функция1, функция2)
7. Zireael - 30 Декабря, 2022 - 05:30:15 - перейти к сообщению
 Цитата:
Визуально сложно в коде такое воспринимается

Передавайте строки, суть не меняется.
CODE:
danet("функция1,функция2");
danet("функция3,функция4");
danet("функция1,функция8");


function danet(string func)
{
string resultGem = GetM();

if(func=="функция1,функция2")
{
if(resultGem=="Да") {messagebox("Запустить функцию1");}
if(resultGem=="Нет") {messagebox("Запустить функцию2");}
return;
}

if(func=="функция3,функция4")
{
if(resultGem=="Да") {messagebox("Запустить функцию3");}
if(resultGem=="Нет") {messagebox("Запустить функцию4");}
return;
}

if(func=="функция1,функция8")
{
if(resultGem=="Да") {messagebox("Запустить функцию1");}
if(resultGem=="Нет") {messagebox("Запустить функцию8");}
return;
}
}


function GetM() {
int m=rand(1,3);
if(m==1) {return "Да";}
if(m==2) {return "Нет";}
}
8. Martin - 30 Декабря, 2022 - 06:44:22 - перейти к сообщению
Zireael , Так конечно понятнее если строки передать, но всё равно приедаться писать больше 10 тысяч вариаций в функции (
к примеру нужно сравнить первую функцию и 100 а потом 89 и 2. Нельзя получается проще сделать?
9. Zireael - 30 Декабря, 2022 - 16:50:45 - перейти к сообщению
Зачем нужны 100 функций? Что хотите сделать?

Powered by ExBB FM 1.0 Final