Что такое «MagicBooleans», «MagicStrings» в пакете alicebot? - PullRequest
0 голосов
/ 19 октября 2018

Я нашел код для простого чат-бота с использованием AIML и Program-ab.Во многих местах используются MagicBooleans и MagicStrings.Что именно это?Кроме того, я не понял, что такое trace_mode?Код, который я нашел, выглядит следующим образом -

import java.io.File;
import org.alicebot.ab.Bot;
import org.alicebot.ab.Chat;
import org.alicebot.ab.History;
import org.alicebot.ab.MagicBooleans;
import org.alicebot.ab.MagicStrings;
import org.alicebot.ab.utils.IOUtils;

public class ChatBot {
private static final boolean TRACE_MODE = false;
static String botName = "super";

public static void main(String[] args) {
    try {

       String resourcesPath = "/home/user/eclipse-workspace/myProject/src/main/resources";
       System.out.println(resourcesPath);

        MagicBooleans.trace_mode = TRACE_MODE;
        Bot bot = new Bot("super", resourcesPath);
        Chat chatSession = new Chat(bot);
        bot.brain.nodeStats();
        String textLine = "";

        while(true) {
            System.out.print("Human : ");
            textLine = IOUtils.readInputTextLine();
            if ((textLine == null) || (textLine.length() < 1))
                textLine = MagicStrings.null_input;
            if (textLine.equals("q")) {
                System.exit(0);
            } else if (textLine.equals("wq")) {
                bot.writeQuit();
                System.exit(0);
            } else {
                String request = textLine;
                if (MagicBooleans.trace_mode)
                    System.out.println("STATE=" + request + ":THAT=" + ((History) chatSession.thatHistory.get(0)).get(0) + ":TOPIC=" + chatSession.predicates.get("topic"));
                String response = chatSession.multisentenceRespond(request);
                while (response.contains("&lt;"))
                    response = response.replace("&lt;", "<");
                while (response.contains("&gt;"))
                    response = response.replace("&gt;", ">");
                System.out.println("Robot : " + response);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

1 Ответ

0 голосов
/ 19 октября 2018

MagicBooleans - это просто класс, обертывающий статические bools:

/**
 * Global boolean values that control various actions in Program AB
 */
public class MagicBooleans {
    public static boolean trace_mode = true;
    public static boolean enable_external_sets = true;
    public static boolean enable_external_maps = true;
    public static boolean jp_morphological_analysis = false;
    public static boolean fix_excel_csv = true;
}

источник на github

Поскольку они статичны, это означает, что вы можете получить к ним доступ, импортировав MagicBooleanи другие классы будут работать с теми же значениями, если они читают, например, MagicBooleans.trace_mode.

Я не уверен, что влияет на trace_mode, но вы можете искать в исходном коде.

То же самое относится к MagicStrings - только статические строки, к которым вы можете получить доступ, используя класс MagicStrings,Вот и вся «магия».

...