Condicionais
Tradução automática
Esta página foi traduzida automaticamente do inglês e ainda não foi revisada por um falante nativo; correções são bem-vindas no GitHub. Se algo não bater, vale o original em inglês. O código e os resultados são os mesmos do original, importados dos arquivos testados.
Tarefa: mostrar uma coisa ou outra dependendo de um valor.
yaml
# Recipe: q:if, q:elseif and q:else.
paths:
components: ./componentsRoda o primeiro ramo cuja condição vale; q:else roda quando nenhuma vale. Uma condição é uma expressão, com and, or e not. Dentro de um atributo, < se escreve <: um arquivo .q é XML.
xml
<q:component name="Stock">
<!-- /?stock=3 -->
<q:set name="stock" type="number" value="{query.stock}" default="0" />
<html>
<body>
<q:if condition="stock == 0">
<p class="out">Out of stock.</p>
</q:if>
<q:elseif condition="stock < 5">
<p class="low">Only {stock} left.</p>
</q:elseif>
<q:else>
<p>In stock.</p>
</q:else>
<!-- A condition is an expression: and, or, not work as in Python. -->
<q:if condition="stock > 0 and stock % 2 == 0">
<p>Sold in pairs: {stock // 2} pairs.</p>
</q:if>
</body>
</html>
</q:component>xml
<q:test name="no stock" page="/">
<test:visit />
<test:expect text="Out of stock." />
<test:expect no-text="In stock." />
</q:test>
<q:test name="a little stock" page="/?stock=3">
<test:visit />
<test:expect text="Only 3 left." />
<test:expect no-text="pairs" />
</q:test>
<q:test name="plenty, and an even number" page="/?stock=8">
<test:visit />
<test:expect text="In stock." />
<test:expect text="Sold in pairs: 4 pairs." />
</q:test>text
tests/stock.test.q
PASS no stock
PASS a little stock
PASS plenty, and an even number
3 passed, 0 failed