【问题标题】:I want a function to return an array in processing.js, the code works until I put the array into a conditional我想要一个函数在 processing.js 中返回一个数组,代码一直有效,直到我将数组放入条件
【发布时间】:2014-02-26 19:43:36
【问题描述】:

这是代码,没有条件它可以正常工作,但是一旦我把它放在那里,代码就会给我“方法必须返回 String[] 类型的结果”

我现在已经尝试了所有方法,希望你们能看到这里有什么问题。 这个话题在网上讨论了很多,但没有一个解决方案给出 我对此事的任何关闭。它可能很简单,我 继续看。

另外,第一段代码不想进入代码框,对此感到抱歉。

String []loadString (String A){

if(A.equals("YEP")){ 

    //Array
    String []IS = {
      "#FFFCFCFC", "S10", "nameString", "print",
      "newlineS8", "S4", "smallspace", "print", "G8",  "nameGraph",
      "newlineS7", "G4", "nationalityGraph", "S3", "space", "print", "elementGraph", "space",        "print" ,"sexGraph",
      "newlineS1", 
      "newlineS1","G2","point","S2","listA","print",
      "newlineS1","G2","point","S2","listB","print", 
      "newlineS1","G2","point","S2","listC","print",
      "newlineS1","G2","point","S2","listD","print", 
      "newlineS4" };

      return  IS;

    }
}

void draw() {

 String IS[] = loadString ("YEP"); // when I send the string "yep" the array should be loaded 
 println(IS);
 noLoop();  
}

【问题讨论】:

  • loadString() 是一个真正的独立函数,还是您的代码与您在此处展示的完全一样?
  • 它完全是这样写的,据我所知,它没有被 processing.js “使用”,是的,我只是测试了它,将 loadString 更改为其他内容不会使错误消失。跨度>
  • 对,对不起,没有看到没有进入格式化的第一行代码。为此添加了一个编辑。

标签: arrays return processing.js


【解决方案1】:

(抱歉耽搁了,希望这仍然有帮助。)

嗯,我认为您收到错误的原因是因为您的函数 loadString() 需要在调用时返回一个 String[],因为这是它的返回类型。

如果没有 if 语句,它将始终返回 String[] IS。但是,当您添加 if 语句时,可能不会返回这样的结果,因为 String[] IS 的整个声明和返回都包含在 if 语句中。 (例如,如果我更改了参数,并调用 loadString("NOPE") 而不是 loadString("YEP")loadString() 会返回什么?什么都没有,因为条件失败,所以 if 语句中没有任何内容运行。)

避免这种情况的一种方法是使用默认返回值,因此将始终返回正确类型的结果,并且只有在满足条件时才将其值更改为有意义的值。这是对 loadString() 的修改,它似乎适用于 Processing.js(我对 Processing 也有点陌生,所以我希望这种方法没有问题):

String []loadString (String A){

  String[] IS = {""};

  if(A.equals("YEP")){ 

    //Array
    IS = new String[] {
      "#FFFCFCFC", "S10", "nameString", "print",
      "newlineS8", "S4", "smallspace", "print", "G8",  "nameGraph",
      "newlineS7", "G4", "nationalityGraph", "S3", "space", "print", "elementGraph", "space",        "print" ,"sexGraph",
      "newlineS1", 
      "newlineS1","G2","point","S2","listA","print",
      "newlineS1","G2","point","S2","listB","print", 
      "newlineS1","G2","point","S2","listC","print",
      "newlineS1","G2","point","S2","listD","print", 
      "newlineS4" };

    }

    return  IS;
}

请注意我最初是如何将 String[] IS 设置为具有单个空字符串的数组,并且仅在 if 语句中更改其值。这样,即使条件失败,String[] IS 仍然会被返回,因此函数将返回正确类型的结果。

希望这会有所帮助!如果有任何不清楚的地方,请告诉我。

【讨论】:

  • 是的,它仍然有帮助!!谢谢 :) 你的解释很清楚。
  • 太棒了!如果此答案解决了问题,请不要忘记将其标记为已接受的答案。 (单击答案左侧的复选标记大纲。)
猜你喜欢
  • 1970-01-01
  • 2013-12-07
  • 2023-01-14
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 2017-03-26
  • 2020-05-12
  • 1970-01-01
相关资源
最近更新 更多