Como passar varargs em um método como uma lista expandida?
-
19-08-2019 - |
Pergunta
Dado o seguinte método de inflamação:
function sendToJava(name:String, ... args)
{
ExternalInterface.call("sendCommand", name, args);
}
Como posso garantir que ExternalInterface.call () interpreta argumentos em sua forma expandida? Agora, se eu passar uma lista em "argumentos", essa lista é interpretado como um único argumento do tipo "Object []" por ExternalInterface.call (). Quando os argumentos chegar Java, eu não tenho nenhuma maneira de diferenciar entre vários argumentos separados por vírgulas contra um único argumento contendo vírgulas como parte de seu valor.
Solução
Um pequeno erro de digitação. Ele deve ser:
function sendToJava(name:String, ... args)
{
// See Array.unshift()
args.unshift("sendCommand", name);
// See Function.apply()
ExternalInterface.call.apply(null, args);
}
Apenas mudança "array" de "aplicar"
De qualquer forma, graças a tonelada para postar isso. Você é um salva-vidas!
Outras dicas
Eu encontrei uma resposta sobre IRC:)
function sendToJava(name:String, ... args)
{
// See Array.unshift()
args.unshift("sendCommand", name);
// See Function.apply()
ExternalInterface.call.array(null, args);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow