Wpis z mikrobloga

via Wykop Mobilny (Android)
  • 37
@kobrys13: kod się wysra przez jakieś cudzyslowy przecinki, zakładam że ten podkreslnik to "wciecie" a nie czesc nazwy funkcji ktora chcesz wywolac;) jak byś to dobrze sformatowal to wyprintowalby elementy w nieustalonej kolejnosci bo set kolejnosci nie trzyma. Jesli uzywasz jakiejs struktury której dzialania nie rozumiesz to nie jest problem z językiem ;) set to całkiem przydatne narzędzie, które nie wiem po co wcisnąłes do tego kodu
kod się wysra przez jakieś cudzyslowy przecinki


@wiewior_s: kod się nie wysra i zwróci wynik, za podkreślniki podziękuj wykopowemu zespołowi specjalistów od formatowania kodu...

a co zwróci to własnie niespodzianka, która zabrała mi trochę czasu jednej nocy...
jeśli cudzyslowy usuniesz to przecinek po stworzeniu seta zrobi tam tuple


@wiewior_s: otóż to - #!$%@? przecinek na końcu linii ma znaczenie - nie trzeba kończyć nawiasami, klamrami czy innym gównem

iteracja po x zwróci tylko jeden element który jest legalnym setem

mieliśmy taki kod:
result = func(x = set([1, 2, 3]), True)

Pojawiało się to w kilku miejscach więc oba argumenty zostały wyciagnięte do zmiennych, przecinek się jakoś tam też
via Wykop Mobilny (Android)
  • 3
@kobrys13: generalnie ktoś tam wpisal glupotke zostawiając taki przecinek, ale uzywane to jest do tego żebyś mógł sobie zrobić coś takiego:
x = a, b, c

I wtedy w x masz tuple który jest immutable i znacznie szybszy od listy.

W mojej 10 letniej karierze się taki problem nie trafił a strzelam że w javie bym zgłupiał od jakiś javowych smaczków
via Wykop Mobilny (Android)
  • 0
@kobrys13: ale ten kod to akurat się juz wysra bo wyglada jak bys najpierw przypisał set do keyword arga x a potem probowal uzyc pozycyjnego argumentu co akurat nie jest dozwolone przy wywolaniu funkcji, cos musiales pomieszac
@wiewior_s:

x = a, b, c
jest naprawdę spoko konstruktem, ale napisanie gramatyki języka, która pozwala na:
x = a b, c,

to jest co najmniej niedopatrzenie - pisałem gramatyki w antlr, 3 semetry miałem teorię automatów i teorię kompilacji.
Coś tam w głowie mam i doświadczenia.

Nikt nie potrafi mi wytłumaczyć czemu miałby legalnie służyć ten przecinek na końcu...

@d3d4s: Wytłumaczenie:
Mieliśmy kod:
result = func(x = set([1, 2,
via Wykop Mobilny (Android)
  • 2
@kobrys13: już tłumaczę czemu jest dozwolony - po to zebys mogl zrobic tuple z jednym elementem.
Pytanie po co robić tuple z jednym elementem?
Chyba tylko dla spojnosci kodu zeby przekazywac gdzies ten sam typ bo inne zastosowanie nie przychodzi mi do głowy :p
@bungaBunga: oczywiście - standardy korporacyjne jakie zastałem nie są idealne i jedną z moich ról jej podnosić je do bardzo wysokich

Dlatego też od niedawna żadna nowa zmiana bez unit testów nie przechodzi, a na listopad zamierzam wrzucić do repo coś co wymusi 90% pokrycie (tzw zdrowy coverage) tak by każdy dotknięty plik wymagał dopisania testów.

Wielu nie będzie zadowolonych, ale tak trzeba...

Co do wyłapania tego przez unit test -