Uczę się Scali i zauważyłem coś o używaniu zwrotu.Jaka jest różnica między używaniem instrukcji return a domyślnym zwracaniem ostatniej wartości?
Tak, oczywiście w Scala, jeśli nie posiada instrukcji return, ostatnia wartość jest zwracana domyślnie. Który jest świetny. Ale jeśli używasz instrukcji return bez określenia typu zwracanej, Scala mówi "error: method testMethod has return statement; needs result type"
Tak to działa
def testMethod(arg: Int) = {
arg*2
}
ale daje to błąd
def testMethod(arg: Int) = {
return arg*2
}
To sprawia mi podrapać brodę i przejść
Mmmmmmmm ... Musi być ku temu powód.
Dlaczego deklaracja typu jawnego jest potrzebna, gdy używasz instrukcji return, ale nie wtedy, gdy pozwalasz Scali zwracać ostatnią wartość? Zakładam, że są dokładnie tym samym, a instrukcje return są przeznaczone tylko dla tego, jeśli chcesz zwrócić wartość wewnątrz funkcji zagnieżdżonej/warunkowej, itd. (Innymi słowy, instrukcja "return" jest automatycznie wstawiana do ostatniej wartości przez kompilator .. jeśli nie przedstawi nigdzie indziej w metodzie)
ale wyraźnie myliłem. Z pewnością musi być jakaś inna różnica w realizacji?
Czy brakuje mi czegoś?
Wyobrażałem to nie kompiluje ponieważ jesteś rzeczywiście użyciu słowa kluczowego 'return' i Miałem rację. Opublikuję odpowiedź w ciągu sekundy. Zasadniczo, jeśli użyjesz return, będziesz szukał tego, że zadeklarowałeś zwracany typ zamiast samodzielnie określać typ zwracany. – Luminous