O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

comando alias (RGSS) da para substituir uma classe com quantidade de param...

Iniciado por Riven, 14/02/2017 às 00:08

Oi programadores, no rpg maker xp rgss, quando se usa o alias, da para reutilizar e estender um método de forma a acrescentar parametros nele?

Tipo, original padrão do rgss :
def initialize(parametro1, parametro2)...

e então para não mexer no original, reecriar utilizando o alias para ter tudo que tem no original e acrescentar uma variavel customizada nesse mesmo metodo que antes tinha 2 parametros agora passar a ter 3, da para fazer isso?

alias :novo_initialize :initialize
def initialize(parametro1, parametro2, parametro3)
novo_initialize #reutilizar tudo que tinha no original e estender/adicionar mais:
@x = parametro3


bom tentei fazer isso mas parece que n é essa a logica, deu erro, tem alguma maneira de fazer isso?


Digamos que o argumento original seja assim:
def initialize(color, number)
    # Coisas
end


Ali, nós temos dois argumentos, color e number. Digamos que eu queira adicionar mais um sem modificar o original.
alias :new_initialize :initialize
def initialize(*args)
    # Coisas
    new_initialize(args[0], args[1])
end


Ok, o que aconteceu ali? Quando usamos *args (o * é o que faz a diferença) nós não estamos mais buscando argumentos específicos.
Nós estamos buscando uma array de argumentos. Então você pode colocar 30 argumentos que ele vai aceitar.

No entanto, para chamar o método original, nós precisamos passar exatamente os argumentos que ele pedia, que seriam color e number.
Os argumentos ali podem ser acessados como uma array comum.
Ex: args[0] retorna o primeiro, args[1] retorna o segundo e assim por diante.


Obrigado por responder Alisson (+ouro pela explicações). Então no momento para atribuir (no caso, criar uma variavel para args) um valor ao *args, o simbolo pode ser:
@args = *args   ?