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

RGSS3 - Aula 3: Métodos

Iniciado por Brandt, 16/10/2013 às 23:32

16/10/2013 às 23:32 Última edição: 30/10/2013 às 23:29 por Masked
RGSS3 - Aula 3

por Masked

Oi gente, essa é a nossa terceira aula de RGSS3, a aula hoje vai ser sobre métodos, não apenas como declarar um método mas também sobre métodos padrão do RPG Maker

O que são métodos?

Métodos são um bloco de script, toda vez que você chamá-lo, o interpretador vai ler o bloco de dentro do método

Como declarar um método?

Os métodos são declarados com o comando def, em seguida, na mesma linha, se escreve o nome do método, ele aparece em azul escuro. Para fechar o bloco, escreve-se um end
Nos métodos, pode-se adicionar () no fim de seu nome, dentro dele você define os argumentos, que são usados como variáveis locais (eu explico elas  depois, por enquanto basta saber que elas são variáveis que só são acessadas dentro do bloco em que estão)

Agora um exemplo:
def metodo(a)
if a == 1
print "a é 1"
end
end

Nesse caso, se o método "metodo" for chamado e seu parametro (a) for 1, ele escreve "a é 1" na janela de depuração

Como chamar um método?

Para chamar um método, escreve-se seu nome como se estivesse escrevendo uma variável, Ex.:
metodo

Simples certo? Mas o nosso método tem um argumento (a) ali, então nós chamamos ele assim:
metodo(valor)
Ao invés do "valor" nós escrevemos o valor do argumento, por exemplo
metodo(1)
Dessa forma, o método vai escrever "a é 1" como definimos nele.
O código inteiro fica assim:

def metodo(a)
if a == 1
print "a é 1"
end
end
metodo(1)


Para que serve o return?

Se você já fuçou em algum script (pode ser um do rpg maker mesmo) deve ter se deparado com um comando dentro de um método: o return
Geralmente, seguindo o return há um valor, certo?
Pode-se dizer que o return retorna (isso mesmo, retorna, volta, envia entenda como quiser) um valor.
Por exemplo:
def retornar(a)
return a
end
print "1 + 0 = #{retornar(1)}"

Assim o método iria escrever 1 + 0 = 1 na janela de depuração, o último 1 é o valor que o método retornou, ( no caso é o argumento (a))

Agora alguns métodos padrão do RPG Maker:

Arrays:

Há alguns métodos usados com arrays no rgss3:

push ou <<

Esse método "pusha" o valor de uma variável para dentro da array, não, não é brincadeira, o método push ou << faz com que uma variável entre dentro da array, um exemplo:
array = []
variavel = 1
array.push(variavel)

ou
array = []
variavel = 1
array <<(variavel)

nos dois casos, a array vai virar [1], se você "pushasse" uma outra variável com valor 2, a array viraria [1, 2] e assim por diante.

clear:

Esse método apaga tudo de dentro da array, se a array for [1, 3, "Oi", array2 = [1, 5, true], 0] e você escrever
array.clear
a array vira [] de novo

delete:

Esse método apaga uma posição na array, se a array for [1, 3, 4, 6] e você escrever
array.delete(1)

ele apaga a posição 1 da array que, no caso, é 3 (lembre-se de que a contagem começa  do 0). Assim a array vira [1, 4, 6]

Conversão:

to_i:

O método to_i converte a variável em integer, não é possível converter letras em integer (o resultado é 0 :facepalm:) nem arrays (o resultado é o erro "undefinied method 'to_i' for []:Array"  :descontente:)

to_s:

Esse método transforma a variável em String, é possível converter qualquer variável com esse método (embora se a variável for nil o resultado será um nada)

to_a:

Eis o método menos utilizado: ele transforma a variável em array, mas só funciona com nil ou outra array  -..- ( meio inútil não?)

to_f:

Transforma a variável em float, funciona como o método to_i

Identificação:

is_a?(Tipo): esse método verifica se a variável é do tipo Tipo, eles são Integer, Float, Array e String. O tipo deve ser colocado no lugar do argumento Tipo

Essa foi a nossa terceira aula de RGSS3, podem comentar pedindo aulas. Até a próxima aula que será sobre Classes e Módulos!
~ Masked

Muito Boa a Aula masked . so poderia ter Falado um pouco sobre métodos
destrutivos. - def name!*args entre outros tipo a diferença de usar o () e o args
e outros como public_methods , singleton_methods. mais esta muito boa a aula
e também falando de métodos e bom aproveitar o gancho e Falar sobre o Alias.

so devia passar umas lições de Casa pra fixar o aprendizado.

Oi mepps, boa dica, devia ter falado do alias e também do attr, acho que vou começar a passar lições, elas ajudam mesmo
~ Masked

Citação de: Masked online 17/10/2013 às 19:25
Oi mepps, boa dica, devia ter falado do alias e também do attr, acho que vou começar a passar lições, elas ajudam mesmo

Opa Masked , Tudo bom ? Poxa gostei de ver as aulas. enfim se me permite acho que o attr seria
melhor deixa-lo pra quando você falar de classes. por que ai vem aquela coisa de declarar uma var
publica mas protegida.. etc.. mais enfim meu jovem Parabens.. Gostei bastante das suas contribuições

tem Face mano? se tiver manda por PM

Para chamar o método em outro Script, tem alguma diferença, ou é apenas o nome dele?

Aliás, é comum chamar os métodos em outros scripts?


Safety and Peace.
ALGUÉM FALOU EM JAIMES DESING?!

// -> cHEAT .exeKUTIVE OFF-ice ~~//


Não sei se entendi sua dúvida, mas para chamar métodos de outro script é só escrever Nome_da_classe_ou_modulo.nome_do_método.

Espero ter ajudado.
~ Masked

É, foi isso mesmo. Basicamente eu não precisaria importar, declarar ele e blá, blá, blá.

E pelo que eu entendi Ruby é uma linguagem que não precisa declarar nada. xD

Safety and Peace.
ALGUÉM FALOU EM JAIMES DESING?!

// -> cHEAT .exeKUTIVE OFF-ice ~~//


Tava testando os conversores mas de início eu não sabia como colocar a variável a ser convertida, depois de um tempo achei um método que não dava erro e fui testar, o código ficou isso ai:
int3 = 5

int3.to_s

if int3.is_a?(String)
  print "int3 é uma string"
else
  print "int3 não é uma string"
end


O negócio é que fui testar e mostrava que "int3 não é uma string", o que estaria dando errado? :v

Isso é porque o método de conversão apenas retorna o valor da variável como uma string, então isso:

a = 112

a.to_s

print a.class


Iria fazer com que "Integer" fosse escrito na janela de depuração, mas isso:

a = 112

print a.to_s.class


Iria fazer com que "String" fosse escrito na janela.

Podemos dizer que ele só converte a variável naquela hora, depois ela volta ao normal.

Se você quiser converter permanentemente a variável, faça isso:

int3 = int3.to_s
~ Masked

Ah, entendi ><

Bom, valeu ai, as aulas são ótimas  :XD: