Non ti senti stanco di scrivere ancora ed ancora il codice per muoverti di un numero prefissato di passi? D'altro canto creare i metodi forward2(), forward3(), forward4(), come anche backward2(), backward3(), backward4() e via dicendo, non sarebbe realmente d'aiuto, per non dir meno.
Fortunatamente è possibile passare parametri ai vostri metodi. Devi specificare il loro [!java|scala]tipo e [/!]nome dentro le parentesi tonde, dopo il nome del metodo. In seguito potrai usarli nel corpo nel metodo come se fossero variabili definite al suo interno ed aventi come valori iniziali quelli indicati dal chiamante.
[!java|c]double [/!]divideByTwo([!java|c]double [/!]x[!scala]: Double[/!])[!scala]: Double =[/!] [!java|scala|c]{[/!][!python]:[/!] return x / 2[!java|c];[/!] [!scala|java|c]}[/!]
Dalla parte del chiamante tu dovrai specificare il valore iniziale di queste "variabili" fra le parentesi dell'invocazione.
[!java|c]double [/!][!scala]val [/!]result = divideByTwo(3.14)[!java|c];[/!]
Se vuoi inserire più di un parametro li devi separare da una virgola (,) sia nella dichiarazione che nell'invocazione.
[!java|c]double divide(double x, double y) {[/!] [!scala]def divide(x:Double, y:Double): Double = {[/!] [!python]def divide(x, y):[/!] return x / y[!java|c];[/!] [!java|scala|c]}[/!]
[!java|c]double res = divide(3.14 , 1.5);[/!] [!scala]val res = divide(3.14 , 1.5)[/!] [!python]res = divide(3.14 , 1.5)[/!][!java|scala]
In [!thelang] puoi dichiarare diversi metodi con lo stesso nome fintantoché essi non hanno la stessa firma rappresentata dallo stesso numero e tipo di parametri.
[!java]double maggiore(double x, double y)[/!][!scala]def maggiore(x:Double, y:Double): Double =[/!] { if (x > y) { return x; } return y; } [!java]int maggiore(int x, int y)[/!][!scala]def maggiore(x:Int, y:Int): Int =[/!] { if (x > y) { return x; } return y; } [!java]int maggiore(int x, int y; int z)[/!][!scala]def maggiore(x:Int, y:Int, z:Int): Int =[/!] { if (x > y && x > z) { return x; } if (y > z) { return y; } return z; }
Osserva che abbiamo omesso il ramo else per ogni if. La
cosa funziona comunque perché il return interrompe l'esecuzione del
metodo. Se arriviamo alla riga finale di
[!java]maggiore(int,int)[/!][!scala]maggiore(Int,Int):Int[/!]
,
noi sappiamo già che x<=y
perché in caso contrario il
return della riga 2 avrebbe fermato l'esecuzione prima.
This time, you have to write a [!java|c]move(int
stepCount,[!java]boolean[/!][!c]int[/!] forward)[/!] [!scala]move(stepCount:
Int,forward: Boolean)[/!] [!python]move(stepCount,forward)[/!]
method which moves forward by stepCount
steps if
forward
is true, and moves back of that amount of steps if the
boolean is false.
Questa volta c'è solo un mondo ma sette buggles, tutti che condividono lo stesso codice. Questo codice non dovrebbe essere troppo problematico da scrivere. (Ndt in questo esercizio non è possibile utilizzare parametri per le funzioni di base forward() e backward())