Как вызвать блоки из подклассов в методе суперкласса?

Я подозреваю, что проблема связана с количеством данных, поступающих с вашим запросом POST. Нет установки, которая ограничивает количество $ _POST vars, которое может быть установлено. Однако для данных POST существует ограничение на память, которое по умолчанию составляет 8 МБ.

В файле php.ini попробуйте изменить значение post_max_size и установите его на более высокое значение. Не забудьте перезапустить apache после внесения изменений.

1
задан ALW 18 March 2019 в 01:39
поделиться

1 ответ

Отредактировано один раз - из-за комментария fede s.

Добро пожаловать на SO.

Отказ от ответственности : Я использую ветку Smalltalk / X-jv, которая отличается от smalltalk от gnu-smalltalk, поэтому я не эксперт по gnu-smalltalk.

1145 Я укажу вам на некоторые недостатки, которые я обнаружил. Слишком много, чтобы указывать. Я дам вам несколько общих идей.

  1. Я обычно не рекомендую использовать a, b, c ... z в качестве переменных. Если вы вернетесь к коду через некоторое время, вы его не поймете.

  2. Для переменных используйте строчные буквы, такие как content вместо Content. Первая заглавная буква зарезервирована для глобальных переменных. В вашем случае использования это будет имя класса (не смешивайте его).

  3. Если вы хотите создать новый экземпляр, используйте его следующим образом: aCard := Card new.

  4. Не создавайте всю логику приложения в вашем методе #init (initialize) ! Вы должны разбивать свой код небольшими читаемыми методами.

Ваш init должен выглядеть следующим образом:

  Deck extend [
      init [
          <category: 'initialization'>
          content := Array new: 52.
          Transcript show: 'Initializing Deck...'.
      ]
  ]

, который создаст метод #init с переменной экземпляра content. Не забудьте создать методы доступа к переменной. Прочтите руководство для gnu-smalltalk и создания методов экземпляра.

  1. У вас должны быть комментарии к петлям whileTrue:. Зачем кому-то угадывать причину ограничений?

     [a <= 4] whileTrue:[
           b := 1 . 
           [b <= 13] whileTrue:[
     ...
    
  2. Иметь веские основания для переопределения new сообщения. Сообщение Transcript может быть ini init:

    Deck class >> new [
         <category: 'instance creation'>
         | r |
         r := self new . 
         Transcript show: 'start  '.
         r init .
         ^r
    ] 
    

Почему вы переопределяете новое? Если у вас есть объект, который является Object subclass:, то он уже понимает сообщение new.

В нижней части кода у вас есть z := Deck new. (я рекомендую использовать, например, myDeck := Deck new.). Если вы хотите запустить инициализацию, вы просто выполните myDeck init.

  1. Почему вы в Card >> init возвращаете ^super init? Может быть, вы хотели сделать первую строку super init (чтение \ загрузка инициализации суперкласса), а затем вернуть ^ self? Трудно сказать.

  2. Suit := Club . Что это значит? Вы создаете как-то новый объект? (отсутствует сообщение #new). Ты пытаешься задеть ниточку? Это должно быть suit := 'Club'. тогда. (то же самое касается всех Sunit переменных).

Еще бы просто читать с хрустального шара. Попробуйте прочитать больше о Smalltalk, и я надеюсь, что мои советы помогут вам в дороге.

0
ответ дан tukan 18 March 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: