Você 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 avançar2(), avançar3(), avançar4(), assim como recuar2(), recuar3(), recuar4() e etc também não ajudam, para dizer o mínimo.
Felizmente, é possível passar parâmetros para seus métodos. Você tem que especificar o tipo e nome entre parêntesis depois do nome do método. Então, você 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", você 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 você quiser vários parâmetros, você precisa separar eles 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], você 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 nós omitimos os ramos else de cada
if. Isto funciona de qualquer jeito por que um
return interrompe a execução do método. Se nós 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 você 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 verdadeiro, e
move para trás a mesmas quantidade de passos se o booleano for falso.
Desta vez existe apenas um mundo mas sete buggles, todos compartilhando o mesmo código. Este código não deve te dar muito trabalho para escrever, na verdade.