Ябло (Свежее) / Говнокод #25669 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
import SwiftUI


struct LandmarkDetail: View {
    @EnvironmentObject var userData: UserData
    var landmark: Landmark


    var landmarkIndex: Int {
        userData.landmarks.firstIndex(where: { $0.id == landmark.id })!
    }


    var body: some View {
        VStack {
            MapView(landmark: landmark)
                .frame(height: 300)


            CircleImage(image: landmark.image(forSize: 250))
                .offset(y: -130)
                .padding(.bottom, -130)


            VStack(alignment: .leading) {
                HStack {
                    Text(landmark.name)
                        .font(.title)


                    Button(action: {
                        self.userData.landmarks[self.landmarkIndex].isFavorite.toggle()
                    }) {
                        if self.userData.landmarks[self.landmarkIndex].isFavorite {
                            Image(systemName: "star.fill")
                                .foregroundColor(Color.yellow)
                        } else {
                            Image(systemName: "star")
                                .foregroundColor(Color.gray)
                        }
                    }
                }


                HStack(alignment: .top) {
                    Text(landmark.park)
                        .font(caption)
                    Spacer()
                    Text(landmark.state)
                        .font(.caption)
                }
            }
            .padding()


            Spacer()
        }
        .navigationBarTitle(Text(landmark.name), displayMode: .inline)
    }
}

https://developer.apple.com/tutorials/swiftui/handling-user-input

Принципиально новый нескучный "декларативный" UI от компании Apple. В наличии:
* магические константы
* спагетти из замыканий
* биндинги, страшные как атомная война
* где-то внутри модная хипстерская реактивная либа

На фоне этого кошмара qml кажется вершиной инженерной мысли

Запостил: Desktop Desktop, (Updated )

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

  • ПИДАРЫ КУДА ДЕЛИ МОЙ СТОРИБИЛДЕР И КОНСТРЕИНТЫ?!!11
    Ответить
  • Заметил закономерность: прогресс цивилизации ведёт к ее погибели. Поначалу кто-то создаёт язык - вполне годный, но чуть сыроватый. Он продаёт или дарит его какой-то компании, там за него берутся другие разработчики и доводят до более высокой кондиции. Затем за дело принимаются третьи руки: язык опять начинает совершенствоваться, посыпаться сахаром, появляются новые конструкции - но вот незадача: конечный продукт гораздо хуже промежуточного, хоть и имеет несомненные преимущества перед тем, что было вначале. Тогда за него принимается четвертая группа разрабов, неумолимо и методично превращая язык в конченное говно.
    Ответить
  • Именно поэтому я за " SwiftForth":
    { ====================================================================
    SIMPLE Dialog box example
    
    Copyright (C) 2001 FORTH, Inc.
    ==================================================================== }
    
    OPTIONAL SIMPLE A modal dialog template which uses catch/throw.
    
    DIALOG (SIMPLE)  [MODAL  " Press counter"      10   10  160   40
       (FONT 8, MS Sans Serif) ]
    
    \  [control        " default text"     id    xpos ypos xsiz ysiz ]
       [DEFPUSHBUTTON  " OK"               IDOK   105   20   45   15 ]
       [PUSHBUTTON     " Clear"            103     05   20   45   15 ]
       [PUSHBUTTON     " Throw"            104     55   20   45   15 ]
       [RTEXT                              101     05   05   18   10 ]
       [LTEXT          " Total errors"     102     25   05   50   10 ]
    
    END-DIALOG
    
    : SIMPLE-CLOSE ( -- res )   HWND 0 EndDialog ;
    
    VARIABLE PRESSES
    
    : .PRESSES ( -- )   HWND 101 PRESSES @ 0 SetDlgItemInt DROP ;
    
    : THROWING ( -- )   -1 THROW ;
    
    : STUPID ( -- )   ['] THROWING CATCH IF PRESSES ++ .PRESSES THEN ;
    
    [SWITCH SIMPLE-COMMANDS ZERO  ( -- res )
       IDOK     RUN: SIMPLE-CLOSE ;
       IDCANCEL RUN: SIMPLE-CLOSE ;
       103      RUN: PRESSES OFF  .PRESSES 0 ;
       104      RUN: STUPID 0 ;
    SWITCH]
    
    [SWITCH SIMPLE-MESSAGES ZERO
       WM_CLOSE      RUNS SIMPLE-CLOSE
       WM_INITDIALOG RUN: ( -- res )   0 PRESSES !  .PRESSES  -1 ;
       WM_COMMAND    RUN: ( -- res )   WPARAM LOWORD SIMPLE-COMMANDS ;
    SWITCH]
    
    :NONAME ( -- res )   MSG LOWORD SIMPLE-MESSAGES ;  4 CB: RUNSIMPLE
    
    : SIMPLE
       HINST  (SIMPLE)  HWND  RUNSIMPLE  0  DialogBoxIndirectParam DROP ;
    
    CR CR .( Type SIMPLE to run the dialog sample.) CR CR
    Правда гуй у него только для винды есть.
    Ответить
      • Ну тут не голый винапи, посмотри на описание диалога и обработку сообщений, всё довольно красиво и декларативненько.
        Ответить
        • > не голый винапи
          > красиво
          Ты серьёзно? Открой любой сишный пример по винапишным диалогам и найди 10 отличий...

          > описание диалога
          Обычный винапишный .rc файл в овечьей шкуре. Даже айдишки вручную придумывать надо. Вот только в оригинале эту хуйню можно было наформошлёпить, а тут?

          > обработка сообщений
          Винапишных сообщений через свичи как в сишке, охуеть декларативность.

          А внизу вообще ехал хвынд через лпарам...
          Ответить
          • > .rc файл
            Но всё таки нет, это программный кот, да к тому же расширяемый. Прямо в сишкокоде такого не напишешь.

            > можно было наформошлёпить, а тут?
            Что-то я не нашёл такого 🙁

            > через свичи как в сишке, охуеть декларативность.
            Свитчь —– декларативная конструкция, к тому же здесь нет явных вызовов многих функций которые были бы в сишкокоде, и циклы писать не надо.

            А ещё эту фигню можно набирать репле и тут же тестировать!
            Ответить
            • В визуал студии был редактор этих rc'шек.

              > прямо в сишкококоде
              Напишешь. Макросами высрать эту пачку DLGITEMTEMPLATE не составляет труда. Функциями в рантайме - тем более.

              > репле
              Это фича форта, а не этой тончайшей говнообёртки над винапи.
              Ответить
          • Просто тут применён незаконный чит, благодаря которому даже винапи смотрится няшным.
            Этот чит ­— тарасоформатирование™.
            Ответить
        • Лол, петухи уже совсем ёбнулись, у них DLGTEMPLATE дикоративный
          Ответить
  • СЯ СЯ ( Туре ) СЯ СЯ


    Джвести лет ждал такого языка программирования. Ваш Бэббидж.
    Ответить
        • У большинства из них на ягодицах были аккуратно выведены буквы «PHP» (расшифровывавшееся как «Passive Homosexual Person» – русский язык они не переносили), начиная с левой, причём так, что навершие правой буквы «P» располагалось точно вокруг ануса, а вертикальная линия выполнена в форме эрегированного члена, как бы устремлённого в обозначенное отверстие. На правой ягодице зачастую мелькали надписи, типа «JavaScript», «SQL», «CSS», «HTML» и т. п. Впрочем, многие из них стыдливо замазывали своё клеймо дерьмом
          Ответить
  • У большинства из них на ягодицах были аккуратно выведены буквы «PHP» (расшифровывавшееся как «Passive Homosexual Person» – русский язык они не переносили), начиная с левой, причём так, что навершие правой буквы «P» располагалось точно вокруг ануса, а вертикальная линия выполнена в форме эрегированного члена, как бы устремлённого в обозначенное отверстие. На правой ягодице зачастую мелькали надписи, типа «JavaScript», «SQL», «CSS», «HTML» и т. п. Впрочем, многие из них стыдливо замазывали своё клеймо дерьмом
    Ответить
  • ErrorDialog DIALOG  10, 10, 300, 110
    STYLE WS_POPUP | WS_BORDER
    CAPTION "Дикоративно!" 
    {
        CTEXT "Select One:", 1, 10, 10, 280, 12
        PUSHBUTTON "&Retry", 2, 75, 30, 60, 12
        PUSHBUTTON "&Abort", 3, 75, 50, 60, 12
        PUSHBUTTON "&Ignore", 4, 75, 80, 60, 12
    }
    Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8