首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AIML <condition>循环体无法在Pandorabots中执行

AIML <condition>循环体无法在Pandorabots中执行
EN

Stack Overflow用户
提问于 2021-12-12 22:40:57
回答 1查看 83关注 0票数 0

我试图在潘多拉中使用AIML遍历一个列表,在最新的Windows 11上使用标准图书馆,通过MS遍历列表。

以下所有代码都发生在相同的<think>标记中。

在这之前还有一个循环。这两个循环在功能上是相同的。每个循环引用不同的基于零的索引映射到谓词名,以便将所有谓词值设置为“未知”。

唯一的区别是两个映射文件;它们之间唯一的区别是大小写和(琐碎)字符串长度,它们都在其他上下文中工作:

[["0", "HI"], ["1", "BY"], ["2", "OK"], [ ... ]][["0", "hello"], ["1", "byenow"], ["2", "okay"], [ ... ]]

所以第一个循环起作用了,但是这个循环显然什么也没做:

代码语言:javascript
复制
<set var="i">0</set>
<set var="allreset">FALSE</set>
<condition var="allreset" value="FALSE">

    <!-- reset predicate -->
    <set><name><map name="thingsdict"><get var="i" /></map></name>
        unknown
    </set>

    <!-- increment and check for OOR -->
    <set var="i"><map name="successor"><get var="i" /></map></set>
    <set var="allreset">
        <srai>XEQ <map name="thingsdict"><get var="i" /></map> XS unknown</srai>
    </set>
    <loop />
</condition>

下面是前一个循环,一个正确工作的循环:

代码语言:javascript
复制
<set var="i">0</set>
<set var="allreset">FALSE</set>
<condition var="allreset" value="FALSE">

    <!-- reset predicate -->
    <set><name><map name="otherthingsdict"><get var="i" /></map></name>
        unknown
    </set>

    <!-- increment and check for OOR -->
    <set var="i"><map name="successor"><get var="i" /></map></set>
    <set var="allreset">
        <srai>XEQ <map name="otherthingsdict"><get var="i" /></map> XS unknown</srai>
    </set>
    <loop />
</condition>

完全一样,不是吗?

编辑:完整类别(为调试而注释的think标记):

代码语言:javascript
复制
<category>
    <pattern>5</pattern>
    <template>
        Starting over...
        <br/><br/>
        <!--<think>-->
            <set name="mode">unknown</set>
            <set name="score">unknown</set>
            <set name="ties">unknown</set>
            <set name="tiecount">unknown</set>
            
            <!-- loop through first map of related predicates -->
            <set var="i">0</set>
            <set var="allreset">FALSE</set>
            <condition var="allreset" value="FALSE">
                <map name="thingsdict"><get var="i" /></map>
                <set><name><map name="thingsdict"><get var="i" /></map></name>
                    unknown
                </set>
                <set var="i"><map name="successor"><get var="i" /></map></set>
                <set var="allreset">
                    <srai>XEQ <map name="thingsdict"><get var="i" /></map> XS unknown</srai>
                </set>
                <loop />
            </condition>
            
            <!-- loop through other related predicates -->
            <set var="i">0</set>
            <set var="allreset">FALSE</set>
            <condition var="allreset" value="FALSE">
                <map name="otherthingsdict"><get var="i" /></map>
                <set><name><map name="otherthingsdict"><get var="i" /></map></name>
                    unknown
                </set>
                <set var="i"><map name="successor"><get var="i" /></map></set>
                <set var="allreset">
                    <srai>XEQ <map name="otherthingsdict"><get var="i" /></map> XS unknown</srai>
                </set>
                <loop />
            </condition>
        <!--</think>-->
        All values erased!
        <br/><br/>
        <srai>HI</srai>
    </template>
</category>

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-22 23:01:22

任何<loop/>标记都必须发生在<li>标记中。确保包含一组没有<li>元素的<loop/>标记;这些标记可以是空的,也可以是空的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70328289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档