właśnie widziałem coś takiego w pewnym kodzie Ruby:Co oznacza przecinek po znaku równości w Ruby?
def getis;gets.split.map(&:to_i);end
k,=getis # What is this line doing?
di=Array::new(k){Array::new(k)}
właśnie widziałem coś takiego w pewnym kodzie Ruby:Co oznacza przecinek po znaku równości w Ruby?
def getis;gets.split.map(&:to_i);end
k,=getis # What is this line doing?
di=Array::new(k){Array::new(k)}
przypisuje pierwszy element tablicy w użyciu Ruby multiple assignment:
a, = [1, 2, 3]
a #=> 1
Lub:
a, b = [1, 2, 3]
a #=> 1
b #=> 2
Można użyć *
aby pobrać pozostałe elementy:
a, *b = [1, 2, 3]
a #=> 1
b #=> [2, 3]
Lub:
*a, b = [1, 2, 3]
a #=> [1, 2]
b #=> 3
To działa w ten sposób. Jeśli lhs
ma jeden element, a rhs
ma wiele wartości, to lhs
zostaje przypisany do tablicy wartości, jak to.
a = 1,2,3 #=> a = [1,2,3]
lhs
natomiast jeśli jest więcej elementów niż rhs
, a następnie nadmiar elementy lhs
odrzuca
a,b,c = 1,2 #=> a = 1, b = 2, c = nil
Dlatego
a, = 1,2,3 #=> a = 1
. Reszta to [2,3] są odrzucane
Dobrze wyjaśnione .. z innymi opcjami 1+ –