На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (8) 1 2 [3] 4 5 ...  7 8 все  ( Перейти к последнему сообщению )  
> Java vs Kotlin
    Цитата korvin @
    в Racket довольно широко используется

    А сам Racket уже научились использовать в практических целях?
      Цитата korvin @
      используем предикат natural? для определения типа

      А почему все время спрашиваешь, не уверен? :D
        Цитата IL_Agent @
        Написать предикат, который проверяет тип аргумента, во многих языках можно. Вызывай его вначале любой функции для проверки аргументов - вот тебе и контракт :)

        дык это динамическая типизация =) когда такое будет в статике? =)
          http://antilamer.livejournal.com/366341.html?thread=3307013#t3307013
            Ну, там правильно пишут: непонятно на кой он.

            Добавлено
            korvin, а в статике нельзя определить тип во время исполнения что ли?
              Цитата MyNameIsIgor @
              korvin, а в статике нельзя определить тип во время исполнения что ли?

              можно, только это не статика будет =)
                Цитата korvin @
                можно, только это не статика будет =)

                Нуууу... Имелась то ввиду, так скажем, типизация по умолчанию. А так и в сисярпе есть dynamic :)
                  Цитата korvin @
                  дык это динамическая типизация =) когда такое будет в статике? =)

                  Динамическая типизация - это когда тип переменной определяется во время выполнения, а не задаётся при написании или выводится при компиляции. Так ? А проверить тип, а затем выполнить определённые действия в зависимости от него, можно и при статической типизации. См. dynamic_cast, например.
                    Цитата korvin @
                    дык это динамическая типизация =) когда такое будет в статике? =)
                    Блин, есть уже. Хз сколько раз показывал.
                    ExpandedWrap disabled
                      template<typename T>
                      void fun(T p);
                       
                      template<>
                      void fun<int>(int p)
                      {
                          std::cout << "реализация для int" << std::endl;
                      }
                       
                      template<>
                      void fun<float>(float p)
                      {
                          std::cout << "реализация для float" << std::endl;
                      }
                       
                      template<>
                      void fun<std::string>(std::string p)
                      {
                          static_assert(true, "реализация для строк запрещена");//ошибка на этапе компиляции
                      }
                       
                      template<typename T>
                      void fun(T p)
                      {
                          std::cout << "реализация для всего остального" << std::endl;
                      }
                    Сообщение отредактировано: Повстанець -
                      Цитата Повстанець @
                      Блин, есть уже. Хз сколько раз показывал.

                      А для int, который > 0 ? :)
                        Цитата IL_Agent @
                        А для int, который > 0 ? :)
                        ExpandedWrap disabled
                          template<int i>
                          void fun()
                          {
                              static_assert(i > 0, "только больше нуля");//скомпилится только при i>0
                          }
                          Цитата Повстанець @
                          Цитата IL_Agent @
                          А для int, который > 0 ? :)
                          ExpandedWrap disabled
                            template<int i>
                            void fun()
                            {
                                static_assert(i > 0, "только больше нуля");//скомпилится только при i>0
                            }

                          и где здесь выделение типа? =)
                          ExpandedWrap disabled
                            #include <iostream>
                             
                            template<int i>
                            void fun () {
                                static_assert( i > 0, "natural" );
                                std::cout << "Natural: " << i << std::endl;
                            }
                             
                            template<int i>
                            void fun () {
                                std::cout << "Integer: " << i << std::endl;
                            }
                             
                            int main () {
                            }

                          фиг с ней с ошибкой про ассерт, но переопределение шаблона -- вот, что важно:
                          ExpandedWrap disabled
                            [ ~/devel/c++ ] g++ test.cpp
                            test.cpp: В функции «void fun()»:
                            test.cpp:5:34: ошибка: «static_assert» не имеет аргументов, зависящих от параметра-шаблона, поэтому должна быть доступна декларация «static_assert» [-fpermissive]
                            test.cpp:5:34: замечание: (с ключом «-fpermissive», G++ примет данный код, но разрешение использовать недекларированные имена будет отменено в дальнейших версиях)
                            test.cpp: At global scope:
                            test.cpp:10:11: ошибка: redefinition of «template<int i> void fun()»
                            test.cpp:4:11: ошибка: «template<int i> void fun()» previously declared here
                            Цитата korvin @
                            фиг с ней с ошибкой про ассерт, но переопределение шаблона -- вот, что важно:

                            Не, это не важно. Повстанець написал пример просто шаблонной функции, которая компилируется только в случае, если её аргумент больше нуля. Если нужно выбрать реализацию, то можно так.
                              Цитата MyNameIsIgor @
                              Не, это не важно. Повстанець написал пример просто шаблонной функции, которая компилируется только в случае, если её аргумент больше нуля. Если нужно выбрать реализацию, то можно так.

                              ой ли? http://ideone.com/h9xG7
                                Цитата
                                fun<i>();
                                И где тут статика?
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (8) 1 2 [3] 4 5 ...  7 8 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0422 ]   [ 14 queries used ]   [ Generated: 16.06.25, 21:45 GMT ]