Как заменить значения двух переменных без вспомогательной переменной?

swift

#1

Начал Изучать swift делаю задания по книжке Усова. Так же смотрю видео уроки Скутаренко. Но пока решил дочитать книгу.
Вопрос такой, в задаче указано:
Объявите две целочисленные однотипные переменные, при этом тип данных первой должен быть задан неявно, а второй явно. Обеим переменным должны быть присвоены значения.
Это вроде сделал, если не так подскажите.

var numThree
numThree = 41
var numFour: Int = 27

Далее нужно поменять значения переменных местами. Для этого вам придется использовать еще одну переменную, которая будет служить буфером???
Не хочу заглядывать ответы, кто подскажет и наведет на правильный путь.
И да, мака пока нет, в ближ. время планируется покупка!


#2

Это всего лишь временная переменная, которая позволит вам поменять местами переменные. Ведь если вы без нее, укажете одной из ваших переменных другое значение, то старое значение из нее вы уже потеряете. А так называемый буфер, позволит это значение сохранить для последующей передачи.
Это легко проверяется и понимается в коде.

var a = 1
var b = 2
b = a // b будет 1
a = b // а будет так же 1

var a = 1
var b = 2
var c: Int
c = b
b = a // b будет 1
a = c // а будет 2

#4

Спасибо большое, все разжевали. Понял!:+1:


#5

А если так?

var a = 10
var b = 5

(a, b) = (b, a)

print(a, b)


#6

Годится. Но это скажем так, уже более современное решение. При обучении мало кто такому рассказывает. Возможно в теме про кортежи это и показывается, но это явно не в самом начале будет.


#7
import Foundation

var a = 10

var b = 5

swap(a, b)

print(a, b)

А чего курсы на SwiftBook не проходите, уж чего-чего а они стоят того.


#8

Да я хотел сначала пройти тут. Но почему то решил сначала прочитать и понять, что за язык. Думаю после книжки для закрепления материала можно!


#9

Тут решать только Вам, но курсы с самого 0 ведут тоже :slight_smile:


#10

Я думаю, что от вас ожидалось что-то такое:

var a = 10
var b: Int = 5

a = a * b
b = a / b
a = a / b