metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-09-19 08:14 pm

О конкатенации строк

Дано: мутабельная переменная максимально длиной 3 символа. В ней записано этих самых три символа и некий интерпретатор пытается выполнить следующую операцию:
a=a+'c'
само собой, падая с рунтайм-ошибкой.

Внимание, вопрос: насколько теоретически сложно в рунтайм-ошибке показать причину этой ошибки, если сначала выполняется конкатенация строк с получением 4-символьной строки, а потом производится присвоение этой строки переменной, где может хранится только 3 символа?

[identity profile] frotmnenogi.livejournal.com 2011-09-19 06:53 pm (UTC)(link)
может просто запретить конкатенацию при onPlace операции (или тех, что деградируют до неё) для настолько строго-типизированных исходных значений? И ошибка тогда будет TypeError какая-нибудь.

[identity profile] frotmnenogi.livejournal.com 2011-09-19 07:26 pm (UTC)(link)
причем onPlace - это будет как параметр для переменной. То есть выражение может быть куда более навороченным:

a = "<tag>" + b + "e" + a + "</tag>"

то переменная "a" именно внутри этого выражения получает свойство onPlace, а при попытке сконкатить с кем то - "page error: core dumped" :)

[identity profile] frotmnenogi.livejournal.com 2011-09-19 07:33 pm (UTC)(link)
Этот параметр может присваиваться и исследоваться его наличие только в случае неуспешного исполнения обратного присвоение - как возможная схема back compatible уже имеющегося код-генератора (для статичной типизации вроде ничо)