Определение типа выражения

Сначала я рассчитал pages счет на основе длины items и числа perpage. После этого для каждой страницы я перечисляю items и проверяю index из item в v-if:

new Vue({
    el: "#app",
    data: {
        perpage: 5,
        items: {
            "fruits": [{
                "from": "Shanghai",
                "to": "Houston",
                "createdOn": "2019-02-20 17:02:45",
                "threadId": "1234564534"
            }, {
                "from": "Mumbai",
                "to": "Texas",
                "createdOn": "2019-02-22 17:02:45",
                "threadId": "223455678"
            }],
            "vegetables": [{
                "from": "Barcelona",
                "to": "Milan",
                "createdOn": "2019-01-20 10:02:45",
                "threadId": "45673456"
            }],
            "paper": [{
                "from": "Kualalumpur",
                "to": "Singapore",
                "createdOn": "2019-02-01 12:02:45",
                "threadId": "234222345"
            }, {
                "from": "Singapore",
                "to": "Vancover",
                "createdOn": "2019-01-20 11:02:45",
                "threadId": "6756434343"
            }],
            "books": [{
                "from": "Jibooty",
                "to": "Ahmedabad",
                "createdOn": "2019-02-10 17:02:45",
                "threadId": "23456789"
            }],
            "toys": [{
                "from": "Shanghai",
                "to": "Houston",
                "createdOn": "2019-02-20 14:02:45",
                "threadId": "123434343"
            }],
            "electronics": [{
                "from": "Somalia",
                "to": "Angora",
                "createdOn": "2019-02-20 17:02:45",
                "threadId": "667676767"
            }]
        }
    },
    computed: {
        length() {
            return Object.keys(this.items).length
        },
        pages() {
            return Math.ceil(this.length / this.perpage)
        }
    }
})

// just to silent vue
Vue.config.productionTip = false;
Vue.config.devtools=false;
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
  <label>per page:</label>
  <input type="number" v-model="perpage" min="1" :max="length">
  
  <ul v-for="n in pages">
    <li v-for="(item, title, index) in items"
    v-if="index >= perpage * (n-1)  && index < perpage * n">
      {{ title }}
    </li>
  </ul>
  
</div>
[ 1112]

надеюсь помочь

7
задан aib 6 May 2009 в 14:01
поделиться

5 ответов

Что вы ищете? Автоматический вывод типа или поиск типа, чтобы правильно объявить переменную вручную? (ваши собственные ответы выглядят так, как будто вы хотите получить второй). В этом случае рассмотрите возможность использования Geordi :

<litb> make type pointer to function taking pointer to array of 10 int returning void
<geordi> void (*)(int (*)[10])

<litb> geordi: { int a = -1; unsigned int b = 0; cout << ETYPE(a + b), ETYPE_DESC(a + b), (a + b); }
<geordi> rvalue unsigned int, rvalue unsigned integer, 4294967295

<litb> geordi: << TYPE_DESC(void (*)(int (*)[10]))
<geordi> pointer to a function taking a pointer to an array of 10 integers and returning nothing

Автоматический вывод типа в настоящее время невозможен без вспомогательных библиотек, таких как boost.typeof, которые будут использовать расширения компилятора, такие как __ typeof __ для GCC. Следующий C ++ получит auto (с другой семантикой, чем текущий auto ) и сможет это сделать вместе с decltype для получения типа выражения.

Если вы можете жить с выходом из локального контекста, вы всегда можете создать такой шаблон функции:

template<typename T> void f(T t) { /* ... */ }
int main() { int a = -1; unsigned int b = 0; f(a + b); }
2
ответ дан 6 December 2019 в 07:52
поделиться

Иногда я просто делаю:

int ***a = expression;

и вижу, что «<тип выражения> нельзя назначить для указателя на ^ 3 int». Это, кажется, самый переносимый способ.

17
ответ дан 6 December 2019 в 07:52
поделиться

В C ++ есть оператор typeid ,

typeid(expression).name()

будет возвращать определяемое реализацией имя типа выражения. Увы, он обычно не читается человеком.

2
ответ дан 6 December 2019 в 07:52
поделиться

Попробуйте Boost.Typeof , чтобы проверить, подходит ли он.

1
ответ дан 6 December 2019 в 07:52
поделиться

gcc имеет typeof () во время компиляции. Он работает как sizeof ().

http://gcc.gnu.org/onlinedocs/gcc/Typeof.html содержит больше информации.

1
ответ дан 6 December 2019 в 07:52
поделиться