Wpis z mikrobloga

Need fast help. :(

Przepisuję swoją grę w warcaby z C++ do Javy (C++ znam całkiem nieźle, a Javy dopiero się uczę). W klasie Board mam metodę

Piece& at(const Field& field);

która przyjmuje pole i zwraca mi referencję do bierki, która na nim stoi, dzięki czemu mogę zrobić

at(field) = piece;

Jak to zrobić w Javie? Wmówili mi, że tutaj wszystko jest zwracane przez referencję, ale chyba jednak nie bo

Piece at(final Piece piece);

nie działa, zwraca błąd

error: unexpected type

required: variable

found: value

więc wygląda na to, że wynikiem funkcji jest wartość, a nie referencja.

Co to Piece& parser Javy oczywiście nie wie.

Wytłumaczy mi ktoś w końcu jak to jest z tymi referencjami? :>

#programowanie #programujzwykopem #java #javatochoroba
  • 18
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Po prostu at nie zwraca ci referencji do miejsca w tablicy tylko referencję do konkretnego Piece'a


To wszystko wyjaśnia.

@an21: Bardzo zgrabnie obszedłeś mój problem, dziękuję... Ale jak sprawić, by funkcja at mogła być L-wartością, tak jak w C++? Da się to w ogóle zrobić?
  • Odpowiedz
Bardzo zgrabnie obszedłeś mój problem, dziękuję... Ale jak sprawić, by funkcja at mogła być L-wartością, tak jak w C++? Da się to w ogóle zrobić?


@Onoki: Nie.

  • Odpowiedz
@Yahoo_: Kolejne ograniczenia... :<

A mógłbyś jeszcze zwrócić uwagę, czy tę deklarację tablicy

private Piece[] board = new Piece[64];

napisałem tak, jak powinna być napisana? Moim celem jest stworzyć tablicę referencji do obiektów typu Piece, która ma 64 pola i na początku do każdego przypisane jest null.
  • Odpowiedz
@Onoki: Poczytaj sobie jak działają referencje w Javie, bo to jednak trochę co innego niż wskaźniki czy referencje w c++.

PS co robi funkcja pop, bo nie do końca łapię?
  • Odpowiedz
@echelon_: Ten tag rzucił mi się w oczy kiedy pisałem java, więc dodałem. :) Jest adekwatny, bo boli mnie, że jest tak ograniczona w stosunku do C++, odbiera władzę nad aplikacją. Ale muszę przyznać, że pisze się szybko, łatwo i przyjemnie, a kod jest bardziej czytelny. I nie trzeba tyle myśleć.
  • Odpowiedz