Skip to content

for循环空循环导致最终输出结果为null #427

@xuechongfei

Description

@xuechongfei

我是写了两个for循环的表达式

  • 表达式1:for循环内部什么也不做
  • 表达式2:循环体内部做了一些操作

本来希望最终都输出1,但是结果是表达式1是null,表达式2是1

public static void main(String[] args) {
       Express4Runner runner = new Express4Runner(
               InitOptions.builder()
                       .interpolationMode(InterpolationMode.DISABLE)
                       .build());

       // 空的for循环
       Map<String, Object> context = new ConcurrentHashMap<>();
       context.put("a", 1L);

       String express1 = "for(int i=0;i<5;i++) {\n"
                       + "                     \n"
                       + "}                    \n"
                       + "1;";

       QLResult r = runner.execute(express1, context, QLOptions.builder().cache(true).avoidNullPointer(true).build());
       System.out.println("Express1 result: " + r.getResult());


       // for循环不为空
       Map<String, Object> context2 = new ConcurrentHashMap<>();
       context2.put("a", 1L);

       String express2 = "for(int i=0;i<5;i++) {\n"
                       + "   a = a + i;        \n"
                       + "}                    \n"
                       + "1;";

       r = runner.execute(express2, context2, QLOptions.builder().cache(true).avoidNullPointer(true).build());
       System.out.println("Express2 result: " + r.getResult());
   }

实际输出结果如下:
Image

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions