Присвоение arg внутри определения функции?
Попытка прочитать какой-то старый код BASIC для создания порта и натолкнуться на эту изумительную концепцию:
1150 DEF FNB(Q)=Q+8*((Q=9)-(Q=0))
Что здесь происходит? Как вы можете назначить параметр так? Почему это не эквивалентно Q+8*(9-0)
?
Я написал небольшую демонстрацию для расследования, но она не дала ничего, что я ожидал:
10 DEF FNB(Q)=Q+8*((Q=9)-(Q=0))
20 PRINT FNB(1)
30 PRINT FNB(2)
20 PRINT FNB(3)
30 PRINT FNB(10)
RUN
1
2
3
10
Ok
Я должен делать что-то не так, потому что FNB
не может быть функцией идентичности.
Может кто-нибудь объяснить, что на самом деле делает Бейсик в этой функции? И почему моя демонстрация не помогает?
1 ответ
Решение
Аааа, я только что понял.
Это не назначение внутри функции, это проверка на равенство!
Если они равны, он возвращает -1 (почему...), иначе 0.
Например:
10 print 9=9
20 print 9=8
RUN
-1
0
Ok
Человек, я давно не использовал язык, который использовал =
для равенства...