Присвоение 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

Человек, я давно не использовал язык, который использовал = для равенства...

Другие вопросы по тегам