- log69 blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Legtöbb modern programnyelv tudja ezt, meg is lepődtem volna, ha pont a ruby ne tudná. :)
A teljesség igénye nélkül: Scala, JavaScript, PowerShell (sajnos jobb linkeket nem találtam)
- A hozzászóláshoz be kell jelentkezni
Nekem új volt és tetszik. Végülis valóban logikus így már.
- A hozzászóláshoz be kell jelentkezni
Python 3.5-tel ilyet is lehet:
>>> tomb = list(range(10))
>>> tomb
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> elso, *kozep, utolso = tomb
>>> elso
0
>>> kozep
[1, 2, 3, 4, 5, 6, 7, 8]
>>> utolso
9
- A hozzászóláshoz be kell jelentkezni
Nem rossz. Úgy látszik Ruby is tudja:
> a, *b, c = [*0..9]
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
> a
=> 0
> b
=> [1, 2, 3, 4, 5, 6, 7, 8]
> c
=> 9
- A hozzászóláshoz be kell jelentkezni
Abban nem látom még a logikát, hogy ha a jobb oldalon tuple áll
miért listát ad értékül kozepnek. Hol van ez leírva?
>>> t = tuple(range(10))
>>> t
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> elso, *kozep, utolso = t
>>> elso
0
>>> kozep
[1, 2, 3, 4, 5, 6, 7, 8]
>>> utolso
9
- A hozzászóláshoz be kell jelentkezni
Ruby-ban a *obj akármennyi darab objektumot jelenthet, például:
def test(*obj)
puts hello
end
test("egy", 55, [1,2,3,4], ...)
Ilyen logika révén fogja jelenteni a maradékot szerintem.
- A hozzászóláshoz be kell jelentkezni
az OK, hogy a maradékot jelenti, de a Pythonra visszatérve a kozep mért pont lista lesz?
Miért nem tuple, vagy más? És ez mindig így van, függetlenül attól, hogy a többszörös értékadás jobb oldalán milyen típusú objektum áll? Például ilyenkor is...
>>> elso,*kozep,utolso = "vakablak"
>>> elso
'v'
>>> kozep
['a', 'k', 'a', 'b', 'l', 'a']
>>> utolso
'k'
>>>
- A hozzászóláshoz be kell jelentkezni
Nem lehet, hogy azért ad vissza listát, mert bármilyen enumerable típusra működik, cserébe csak annyit tud garantálni, hogy amit visszaad, az is enumerable lesz?
- A hozzászóláshoz be kell jelentkezni
Ez így nem gondolnám, hogy korrekt lenne.
Ha valami enumerable, akkor azon gond nélkül megvalósítható az FP-ben használt head(), tail(), last() meg a maradék egy függvény, aminek a neve nem jut eszembe ;-). Ezekkel meg megvalósíthatóak lennének ezek a szintaktikai szépségek típustartással (vagy mivel.).
Vagy legalábbis én így csinálnám.
- A hozzászóláshoz be kell jelentkezni
Végül ezt találtam, mint "hivatalos" forrást:
https://www.python.org/dev/peps/pep-3132/
illetve további magyarázat:
http://stackoverflow.com/questions/35636785/starred-expression-on-left-…
- A hozzászóláshoz be kell jelentkezni