Właśnie zacząłem uczyć się języka Java.
Mój przyjaciel, który pomaga mi w nauce, właśnie wysłał mi to i powiedział „rozwiąż to”.
Niestety nie mogę tego przeczytać. Dla mnie wygląda jak Perl.
class _{_ _;_(){_=this;}}
Co to znaczy?
Właśnie zacząłem uczyć się języka Java.
Mój przyjaciel, który pomaga mi w nauce, właśnie wysłał mi to i powiedział „rozwiąż to”.
Niestety nie mogę tego przeczytać. Dla mnie wygląda jak Perl.
class _{_ _;_(){_=this;}}
Co to znaczy?
Odpowiedzi:
_
to nazwa klasy. To bardzo zagmatwane, ale działa!
Po zmianie nazwy klasy:
class Something {Something something;Something(){something=this;}}
I uporządkowane:
class Something {
Something something;
Something() {
something=this;
}
}
I możesz oszaleć z tym dziwnym nazewnictwem :)
class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__=___;}}
W rzeczywistości Unicode jest nawet obsługiwany, więc jest to ważne:
class 合法類別名稱{合法類別名稱(){}}
get crazy
przykładzie jest kilka błędów . (1) zapomniałeś dodać średnik po ____=__
(dwa razy), (2) jeśli próbujesz przeciążyć _
metodę, musisz również przekazać typ, więc _(___)
powinno być _(_ ___)
. Oto jak to może wyglądać class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__ = ___;}}
. Poczekaj minutę. Czy właśnie zdebugowałem podkreślenia? Czas na hamulec.
_
to nazwa klasy, podkreślenie to poprawna nazwa zmiennej Java, wystarczy wciąć kod, aby go odszyfrować:
class _{
_ _;
_(){
_=this;
}
}
Lubić:
class A{
A A;
A(){
A=this;
}
}
Edycja: dzięki @Daniel Fischer
Nazwy typów i nazwy zmiennych mają różne przestrzenie nazw. i na przykład kod
class FOO { FOO FOO; }
jest ważny w Javie.
Podsumowanie
_
to nazwa klasy, np. at class _{
_
jest nazwą członka klasy, np. at _ _;
i_=this
_
to nazwa konstruktora, np. at _()
Pamiętaj: Java używa sześciu różnych przestrzeni nazw:
- Nazwy pakietów,
- nazwy typów,
- nazwy pól (zmiennych),
- nazwy metod,
- lokalne nazwy zmiennych (w tym parametry) i
- etykiety.
Ponadto każde zadeklarowane wyliczenie ma własną przestrzeń nazw. Identyczne nazwy różnych typów nie kolidują; na przykład metoda może mieć taką samą nazwę jak zmienna lokalna .
class FOO { FOO FOO; }
Pracuje.
data Foo = Foo | Bar Int
działa. Oczywiście może działać tylko w językach, w których można określić kategorię identyfikatora, z której się on pojawia.
cóż, to dobry przykład. W Javie unicode może być identyfikatorami, więc możesz napisać coś takiego:
class ⲥlass {
ⲥlass claѕѕ;
}
tutaj nazwa klasy c to 'ⲥ' (U + 2CA5 COPTIC MAŁA LITERA SIMA) i
nazwa obiektu to „” (U + 0455 CYRILLIC MAŁA LITERA DZE).
class
, to słowo kluczowe.
'class'
. jak już wspomniałem, nazwa obiektu 'claѕѕ'
ma 'ss'
znaki spoza ASCII. więc w rzeczywistości nazwa obiektu claѕѕ
brzmi: cla\u0455\u0455'
Myślę, że to wyjaśnia nieporozumienie. :)