1. Куча / Говнокод #17865

    +132

    1. 1
    2. 2
    3. 3
    IF ` ` <> ' '.
      MESSAGE 'Oh no!' TYPE 'X'.
    ENDIF.

    ABAP и строковые литералы. Пробел из STRING следует сравнивать именно с ` `, а не ' ' или константой SPACE.

    Запостил: Yaruson, 26 Марта 2015

    Комментарии (6) RSS

    • А чем там отличаются ` ` и ' '?
      Ответить
      • ' ' и space — это или пробел, или ничего: как в случае с типом STRING переменной длины, так и обыкновенным CHAR(n); а ` ` — это всегда пробел для любого типа. Как-то так работает приведение типов, по крайней мере выглядит внешне.
        Ответить
        • Т.е. ' ' тримнуться может во время приведения к некоторым типам?
          Ответить
          • Да, конкретно — при приведении к String.
            Уточнение: тип Char имеет фиксированную длину и поэтому сложно сказать, записывается в него пробел или ничего при присваивании space или ' ', но в любом случае далее он трактуется как пробел.
            Ответить
            • char(N) поди как в sql добивается пробелами?
              Ответить
              • Да, добивается пробелами до длины N: текст справа, числа — слева.
                Ответить

    Добавить комментарий