Perché non esiste un comando di scambio? [chiuso]

-2

In molti linguaggi di programmazione, vedo che i programmatori fanno sempre fatica a scambiare 2 variabili. Il più delle volte costa 3 copie e un variabele temporaneo per realizzarlo.

Perché il linguaggio di programmazione non ha il supporto integrato per qualcosa di base come questo?

    
posta Muis 17.03.2015 - 04:45
fonte

4 risposte

15

Perché di solito non ne hai bisogno

Scambiare il contenuto di due variabili è un'attività che viene principalmente utilizzata nelle università o nelle classi di programmazione.

L'uso nella vita reale è limitato agli algoritmi di ordinamento e (forse?) alla crittografia. Se stai scrivendo un algoritmo come questo, sei probabilmente in grado di scambiare due valori comunque.

Detto questo, la maggior parte dei linguaggi di programmazione non ha molte cose integrate per cominciare. Molte delle funzioni che usiamo ogni giorno fanno parte di una libreria o di un ambiente di runtime. Queste funzioni sono spesso aggiunte in modo incrementale, ma solo se risolvono i problemi degli utenti della lingua o della libreria in particolare: è tutta una questione di domanda.

    
risposta data 17.03.2015 - 08:23
fonte
4

In alcune lingue, le variabili non possono essere assegnate (più di una volta, alla loro definizione). In particolare in linguaggi funzionali come le variabili di Ocaml (o Haskell) non possono essere scambiate (questo sarebbe privo di significato). In questi linguaggi i riferimenti mutabili oi campi mutabili non sono uguali alle variabili. E i linguaggi funzionali non hanno comandi o istruzioni, ma solo espressioni!

    
risposta data 17.03.2015 - 09:31
fonte
3

Ci sono altri metodi per fare la stessa cosa. Alcuni dei quali sono più flessibili, consentendo la rotazione.

In Python:

x = 1
y = 2
z = 3
(x, y) = (y, x)
print x, y
(x, y, z) = (z, x, y)
print x, y, z

Altre lingue consentono un comportamento simile.

    
risposta data 17.03.2015 - 05:00
fonte
0

Intendi InterlockedExchange o come STL's swap , sebbene nessuno dei due sia specifico per la lingua STL è abbastanza vicino.

    
risposta data 17.03.2015 - 14:11
fonte

Leggi altre domande sui tag