🤔 Para Refletir :
"O que e um game dev? Uma miseravel pequena pilha de projetos !"
- codingkitsune

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

Estado
Tópico fechado. Não é possível fazer postagens nela.

Riven

Cidadão
Membro
Membro
Juntou-se
13 de Fevereiro de 2017
Postagens
133
Bravecoins
4
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?
 
Cara, não lembro agora de cabeça, tenho até que testar antes para ter certeza de como fazer. Mas você terá que usar o operador 'splash' (deve ser esse o nome). Ele permite usar quantos parâmetros você quiser, guardando numa array. Seria algo do tipo:

def initialize(argumentos*)

Dai você extrai os dois e quanto mais quiser desse array. Outro jeito que talvez funcione seria usar os dois parâmetros obrigatórios e fazer o terceiro parâmetro como splash, ou então se não quiser complicar, como opcional, com valor já definido. Dai o cara pode usar dois ou três parâmetros.

Dos dois primeiros jeitos deve dar para usar um número indefinido(infinito!) de parâmetros, do terceiro você terá um número bem definido, que será os de valor obrigatório e os opcional. Deu para entender? Ficaria assim:

def initialize(parametro1, parametro2, parametro3 = 0)

Depois eu confirmo o melhor jeito e te passo uma resposta mais exata.
 
Vamos supor que você tem um método que exibe o valor de 'a' e 'b':
Código:
class Resque
  def metodo_legal(a, b)
    puts a
    puts b
  end
end

Resque.new.metodo_legal(1, 2)

Resultado:
1
2


Agora vamos alterar o método 'metodo_legal' para receber mais um parâmetro 'c' e exibir o valor dele junto com o valor de 'a' e 'b'

Código:
class Resque
  def metodo_legal(a, b)
    puts a
    puts b
  end
end

class Resque
  alias :metodo_legal_alterado :metodo_legal
  
  def metodo_legal(a, b ,c)
    # chamada do método original
    metodo_legal_alterado(a, b)

    # chamada do terceiro parâmetro 'c'
    puts c
  end
end

Resque.new.metodo_legal(1, 2, 4)

Resultado:
1
2
4
 
Resque comentou:
Vamos supor que você tem um método que exibe o valor de 'a' e 'b':
Código:
class Resque
  def metodo_legal(a, b)
    puts a
    puts b
  end
end

Resque.new.metodo_legal(1, 2)

Resultado:
1
2


Agora vamos alterar o método 'metodo_legal' para receber mais um parâmetro 'c' e exibir o valor dele junto com o valor de 'a' e 'b'

Código:
class Resque
  def metodo_legal(a, b)
    puts a
    puts b
  end
end

class Resque
  alias :metodo_legal_alterado :metodo_legal
  
  def metodo_legal(a, b ,c)
    # chamada do método original
    metodo_legal_alterado(a, b)

    # chamada do terceiro parâmetro 'c'
    puts c
  end
end

Resque.new.metodo_legal(1, 2, 4)

Resultado:
1
2
4
Gracias Rafel e Resque.
O post do Resque, era isso, entendi. Obrigado mesmo brotha, resolvido.

 
Estado
Tópico fechado. Não é possível fazer postagens nela.
Voltar
Topo Inferior