Pharo SubscriptOutOfBounds: ошибка 5 - PullRequest
       19

Pharo SubscriptOutOfBounds: ошибка 5

0 голосов
/ 29 апреля 2018

У меня есть расширение Pharo, которое добавляет обещания к Pharo Smalltalk. Затем я использую расширение обещания, чтобы сделать банковский перевод со следующим банковским приложением. Счет связывается с банком, чтобы перевести деньги на другой счет. Этот код завершается с ошибкой SubscriptOutOfBounds: 5 . Я посмотрел на Рекурсивный метод в pharo выдает #SubscriptOutOfBounds: 8 . В нем говорится о границах массивов, но я понятия не имею, где я мог бы использовать массивы в своей реализации, если это не делает стек. Отладчик говорит кое-что о массивах, но на данный момент это слишком загадочно для меня. Обещания прекрасно работают с другими примерами, но не для этого конкретного примера. И, похоже, ошибка возникает из-за закомментированного кода в Account >> перевод: на:

Ниже находится счет >> перевод: на:

transfer: amount to: account
        | bank promise|
        bank := Bank new.
        (availability > (lowerLimit + amount)) ifTrue: [    availability := availability - amount.
        promise := [ bank transfer: amount from: self to: account ]promiseValue. 
        "promise
            then: [ :respose | 
                respose
                    ifTrue: [ self reduceBalance: amount ] ]
            catch: [ :error | ^error ] "]
            ifFalse: [ ^ self ].

А это банк >> перевод: сумма: от: до:

transfer: amount from: anAccount1 to: anAccount2
    |transfered|
    transfered := false.
    (anAccount1 availableBalance < anAccount1 lowerLimit + amount)
     ifTrue: 
    [self error: 'Account lower Limit reached', (anAccount1 lowerLimit) printString ] 
    ifFalse:
    [ self deposit: amount to: anAccount2. transfered := true ].
    ^transfered 

Что может быть причиной этой ошибки?

...