ヘルプ:条件文
註:このページを読む前に、Help:テンプレート、Help:マジックワードを読むことをお勧めします。
ここでは、条件文について、解説します。条件文とは、if文などの「もしも~なら」という形で場合分けする文のことですが、ここでは条件文を書くためのMediaWikiの機能について解説します。
条件文を記述する機能は、MediaWikiのParserFunctions拡張機能が提供しています。条件文は以下のような書式で書くことができます。
{{#関数名: 引数1 | 引数2 | 引数3... }}
関数一覧
[編集]現在、日本語版ウィキボヤージュではexpr
、if
、ifeq
、ifexist
、ifexpr
、switch
、time
、timel
、rel2abs
、titleparts
、iferror
の条件文が使用可能です。
expr
[編集]expr
関数は、数式の演算を行います。書式は、
{{#expr: <数式> }}
です。
小数は.
、分数は/
を使用してください。
演算子 | 演算 | 例 |
---|---|---|
( )
|
優先 | {{#expr: (30 + 7) * 7 }} = 259
|
+
|
正符号 | {{#expr: 30 * +7 }} = 210
|
-
|
負符号 | {{#expr: 30 * -7 }} = -210
|
not
|
論理否定 | {{#expr: not 0 * 7 }} = 7{{#expr: not 30 * 7 }} = 0
|
*
|
乗算 | {{#expr: 30 * 7}} = 210
|
/
|
除算(div と全く同じ)
|
{{#expr: 30 / 7}} = 4.2857142857143
|
div
|
除算(/ と全く同じ)
|
{{#expr: 30 div 7}} = 4.2857142857143
|
mod
|
剰余 | {{#expr: 30 mod 7}} = 2
|
+
|
加算 | {{#expr: 30 + 7}} = 37
|
-
|
減算 | {{#expr: 30 - 7}} = 23
|
round
|
四捨五入round の右に小数点以下の桁数を入れる
|
{{#expr: 30 / 7 round 7}} = 4.2857143
|
=
|
等号、左右は等しい | {{#expr: 30 = 7}} = 0
|
<>
|
不等号、左右は等しくない | {{#expr: 30 <> 7}} = 1
|
!=
|
不等号、左右は等しくない、排他的論理和 | {{#expr: 30 != 7}} = 1
|
<
|
小なり、左は右より小さい | {{#expr: 30 < 7}} = 0
|
>
|
大なり、左は右より大きい | {{#expr: 30 > 7}} = 1
|
<=
|
左は右以下 | {{#expr: 30 <= 7}} = 0
|
>=
|
左は右以上 | {{#expr: 30 >= 7}} = 1
|
and
|
論理積 | {{#expr: 30 and 7}} = 1
|
or
|
論理和 | {{#expr: 30 or 7}} = 1
|
演算子 | 演算 | 例 |
---|---|---|
^
|
冪乗 | {{#expr: 4^2}} = 16{{#expr: 2^7}} = 128
|
ln
|
自然対数 | {{#expr: ln2}} = 0.69314718055995
|
abs
|
絶対値。符号の除去 | {{#expr: abs1.2}} = 1.2{{#expr: abs-1.2}} = 1.2
|
trunc
|
小数点以下切り捨て | {{#expr: trunc1.5}} = 1{{#expr: trunc-1.2}} = -1
|
floor
|
床。引数以下の最大の整数 | {{#expr: floor 1.2}} = 1{{#expr: floor -1.2}} = -2
|
ceil
|
天井。引数より大きい最小の整数 | {{#expr: ceil 1.2}} = 2{{#expr: ceil -1.2}} = -1
|
sin
|
三角関数 | {{#expr: sin .1}} = 0.099833416646828{{#expr: sin(30*pi/180)}} = 0.5
|
cos
| ||
tan
| ||
asin
| ||
acos
| ||
atan
|
なお、カンマ入りの数はFormatnumマジックワードでカンマを取ってください。
記入 | 出力 |
---|---|
{{Formatnum:1,234,567,890|R}} |
1234567890 |
{{#expr: {{Formatnum:1,234,567,890|R}} }} |
1234567890 |
if
[編集]if
関数は、第一引数が空文字列あるいは半角スペース (
) の場合[註 1]、第三引数を返し、そうでない場合第二引数を返します。
入力 | 出力 | 解説 |
---|---|---|
{{#if: あ | true | false }} |
true | |
{{#if: | true | false }} |
false | |
テンプレートの引数が定義されているかを調べる | ||
定義されていなかった場合 | ||
{{#if: {{{1|}}} | true | false }} |
false | {{{1|}}} が空だったので、falseを返した
|
{{#if: {{{1}}} | true | false }} |
true | {{{1}}} には何も入っていなかったが、{{{1}}} という文字列がそのまま返されたので、if関数はtrueを返した。(詳しくはHelp:テンプレート参照)
|
「あ」が定義されていた場合 | ||
{{#if: {{{1|}}} | true | false }} |
true | {{{1|}}} に「あ」が定義されていたため(空文字列ではなかったため)、trueを返した。
|
{{#if: {{{1}}} | true | false }} |
true | {{{1}}} に「あ」が定義されていたため、空文字列でなかったのでtrueを返した。
|
ifeq
[編集]{{#ifeq: <文字列1> | <文字列2> | <等しいときに返す文> | <等しくないときに返す文> }}
ifeq
関数は第一引数と第二引数に入力された文字列を比較し、等しい場合には第三引数を、等しくない場合には第四引数を返します。
脚注
[編集]- ↑ 全角スペースは文字列とみなす