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

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

Date: 2011-09-19 05:53 pm (UTC)
From: [identity profile] aamonster.livejournal.com
Для полноты картины предлагаю сообщение об ошибке тоже ограничить 3 символами.

Date: 2011-09-19 05:56 pm (UTC)
From: [identity profile] theiced.livejournal.com
эмм... "хуй". три символа и по делу.

Date: 2011-09-19 06:28 pm (UTC)
From: [identity profile] w00dy.livejournal.com
> если сначала выполняется конкатенация строк

Сначала должна выполняться проверка на границы. len (a) == 3, sizeof (a) == 3. 3 + 1 > 3 - наступает рунтиме еггог.

Date: 2011-09-20 06:07 am (UTC)
From: [identity profile] metaclass.livejournal.com
Для этого нужно сначала вывести типы всех этих выражений, я думаю, при этом ошибка бы до рунтайма просто не дожила.

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

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

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

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

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

Date: 2011-09-19 07:25 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
InvalidCast string -> LimitedString

etc.

Date: 2011-09-21 11:48 am (UTC)
From: [identity profile] permea-kra.livejournal.com
Может сделать таки строки иммутабельными на манер джавы, а в переменной хранить на эту строку ссылку ?

Date: 2011-09-28 11:03 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Что значит "показать причину этой ошибки"?
Edited Date: 2011-09-28 11:03 am (UTC)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 13th, 2025 01:32 pm
Powered by Dreamwidth Studios