註:このページを読む前に、Help:テンプレートHelp:マジックワードを読むことをお勧めします。


ここでは、条件文について、解説します。条件文とは、if文などの「もしも~なら」という形で場合分けする文のことですが、ここでは条件文を書くためのMediaWikiの機能について解説します。

条件文を記述する機能は、MediaWikiのParserFunctions拡張機能が提供しています。条件文は以下のような書式で書くことができます。

{{#関数名: 引数1 | 引数2 | 引数3... }}

関数一覧 編集

現在、日本語版ウィキボヤージュではexprififeqifexistifexprswitchtimetimelrel2abstitlepartsiferrorの条件文が使用可能です。

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関数は第一引数と第二引数に入力された文字列を比較し、等しい場合には第三引数を、等しくない場合には第四引数を返します。

脚注 編集

  1. 全角スペースは文字列とみなす

外部リンク 編集