【问题标题】:Maya MEL script pass command with string array parameter to evalEchoMaya MEL 脚本将带有字符串数组参数的命令传递给 evalEcho
【发布时间】:2017-03-29 04:42:49
【问题描述】:

如何将带有字符串数组参数的命令传递给 MEL 中的evalEcho?下面的代码不起作用(只是一个示例),$list 必须已声明可以工作,但这是在 createList 中完成的。

global proc string[] returnList(string $list[]) {
    return $list;
}

global proc createList() {
    string $list[];

    $list[0] = "Hello";
    $list[1] = "World";

    evalEcho "returnList $list";
}

createList();

终端:

// Error: Line 11.17: "$list" is an undeclared variable. //

由于某种原因,下一个代码按预期工作:

global proc string[] returnList(string $list[]) {
    return $list;
}

string $list[];

$list[0] = "Hello";
$list[1] = "World";

evalEcho "returnList $list";

【问题讨论】:

    标签: arrays echo eval maya mel


    【解决方案1】:

    或者把它们也放进去......

    global proc string[] returnList(string $list[]) {
        return $list;
    }
    
    global proc createList() {
        evalEcho "string $list[]";
    
        evalEcho "$list[0] = \"Hello\"";
        evalEcho "$list[1] = \"World\"";
    
        evalEcho "returnList $list";
    }
    
    createList();
    

    【讨论】:

    • @Danilo(我无法在您的帖子下添加评论)为什么您的版本可以正常工作 - 因为封装(您在 evalEcho 的范围之外被贴花变量)。
    • 为什么我的版本有效 - 我通过使用 eval 评估变量将变量置于范围之外。如果您将createList 中的变量声明为全局变量(global string $list[];),您可以获得相同的结果
    【解决方案2】:

    此代码应该按您预期的方式工作:

    global proc string[] returnList(string $list[]) {
        return $list;
    }
    
    global proc createList() {
        string $list[];
        $list = stringToStringArray("Hello, World!", " ");
    
        evalEcho( "\n" + "//" + " " + $list[0] + " " + $list[1] + " " );
    }
    
    createList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-20
      • 2017-01-19
      • 2017-07-18
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多