Não está cansado de escrever o mesmo código várias vezes para se mover uma certa quantidade de passos? Por outro lado, escrever forward2(), forward3(), forward4(), assim como backward2(), backward3(), backward4() e etc também não ajudam, para dizer o mínimo.
Felizmente, é possível passar parâmetros para os seus métodos. Tem que especificar o tipo e nome entre parêntesis depois do nome do método. Então, pode usá-los no corpo do método como se eles fossem variáveis definidas lá e com valores iniciais que o "caller" especificou.
[!java|c]double [/!]dividirPorDois([!java|c]double [/!]x[!scala]: Double[/!])[!scala]: Double =[/!] [!java|scala|c]{[/!][!python]:[/!]
return x / 2[!java|c];[/!]
[!scala|java|c]}[/!]
Como o "caller", deve especificar o valor inicial destas "variáveis" entre parêntesis na chamada.
[!java|c]double [/!][!scala]val [/!]result = dividirPorDois(3.14)[!java|c];[/!]
Se quiser vários parâmetros, precisa separar-os com vírgulas (,) tanto na declaração quanto na chamada.
[!java|c]double dividir(double x, double y) {[/!]
[!scala]def dividir(x:Double, y:Double): Double = {[/!]
[!python]def dividir(x, y):[/!]
return x / y[!java|c];[/!]
[!java|scala|c]}[/!]
[!java|c]double res = dividir(3.14 , 1.5);[/!] [!scala]val res = dividir(3.14 , 1.5)[/!] [!python]res = dividir(3.14 , 1.5)[/!][!java|scala]
Em [!thelang], pode declarar vários métodos de mesmo nome desde que eles não tenham a mesma assinatura, ou seja, a mesma quantidade e tipo de parâmetros.
[!java]double max(double x, double y)[/!][!scala]def max(x:Double, y:Double): Double =[/!] {
if (x > y) {
return x;
}
return y;
}[!java]int max(int x, int y)[/!][!scala]def max(x:Int, y:Int): Int =[/!] {
if (x > y) {
return x;
}
return y;
}
[!java]int max(int x, int y; int z)[/!][!scala]def max(x:Int, y:Int, z:Int): Int =[/!] {
if (x > y && x > z) {
return x;
}
if (y > z) {
return y;
}
return z;
}
Observe que omitimos os ramos else de cada if. Isto
funciona de qualquer jeito por que um return interrompe a execução
do método. Se chegarmos à última linha de
[!java]max(int,int)[/!][!scala]max(Int,Int):Int[/!], vamos
saber que x<=y por que de outra forma, o return da
linha 2 deveria ter parado a execução.
Agora vai ter que escrever um método [!java|c]mover(int
contaPassos,[!java]boolean[/!][!c]int[/!] forward)[/!]
[!scala]mover(contaPassos: Int,forward: Boolean)[/!]
[!python]mover(contaPassos,forward)[/!] que move para a frente
contaPassos passos se forward for true e move para
trás a mesmas quantidade de passos se o booleano for false.
Desta vez existe apenas um mundo mas sete buggles, todos a compartilhar o mesmo código. Este código não deve te dar muito trabalho para escrever, na verdade.