Osobní stránky

Pozor na stejné pojmenování proměnných a metod ve Scale

Při experimentování s jazykem Scala jsem dnes narazil na nepříjemnou chybu, která byla způsobena stejným pojmenováním proměnné a metody.

Z programování v Javě jsem zvyklý do proměnné přiřazovat výsledek metody a tuto proměnnou často pojmenuji stejným jménem jako meotoda. Vím tedy jaká data mám v této proměnné. Například:

String post = post("url");

Stejný způsob jsem chtěl použít i ve Scale:

// nefunkcni kod
val post = post("url")

Tento kód nešel použít a vracel chybu: recursive value post needs type. Myslel jsem, že si Scala nedokáže odvodit typový parametr, tak jsem ho k proměnné přidal:

// Nefunkcni kod
val post:String = post("url")

Program stále nefungoval a nyní vracel chybu: too many arguments for method apply: (index:Int) Char in class StringOps. Došlo mi, v čem je chyba. Ve Scale můžete s metodami zacházet jako s proměnnými stejně jako v javascriptu a proto si Scala myslela, že je metoda volána rekurzivně.

Vyhněte se tedy ve Scale stejnému pojmenování proměnných a metod. V opačném případě se díky flexibilitě Scaly můžete dostat do problémů.

Jakub Škvára


Jakub je cestovatel, blogger a webový vývojář. Zajímá se především o technické novinky a rád navštěvuje konference. Používá: Symfony2 Framework, AngularJS, NodeJS, MongoDB a další moderní technologie. Aktuálně žije v Londýně.