Ассоциативность

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

Ассоциативность (от лат. associatio — соединение)

  1. В математике (также сочетательность) — свойство любой операции λ, такое что для нее выполняется равенство: \lambda(\lambda(x,y),\,z)=\lambda(x,\,\lambda(y,z))\,, или, в более привычной для двухместных операций записи: (x\,\lambda\, y)\,\lambda\, z = x\,\lambda\, (y\,\lambda\, z)\, для любых элементов x,y,z\,\!. Например, для умножения: (x\cdot y)\cdot z = x\cdot (y\cdot z).
  2. В программировании (также очерёдность) ассоциативностью операторов называют последовательность их выполнения (или направление вычисления), реализуемая, в случае когда операторы имеют одинаковый приоритет и отсутствует явное (с помощью скобок) указание на очередность их выполнения. При этом различается А. справа-налево и А. слева-направо. Например, в языке Python большинство операций имеет А. слева-направо, в то время как возведение в степень ассоциативно справа-налево:

    А. справа-налево, возведение в степень в языке Python:

    x ** y ** z = x ** (y ** z)
    2 ** 2 ** 3 = 2 ** (2 ** 3) = 256
    (2 ** 2) ** 3 = 64
    

    А. слева-направо, побитовый сдвиг в языке Python:

    x << y << z = (x << y) << z
    2 << 2 << 3 = (2 << 2) << 3 = 64
    2 << (2 << 3) = 131072
    

[править] См. также