こんにちは😀
今回も関数の応用表現を追っていきます。
「infix」という文法用語をみてみます。
infix(インフィックス)とは、「文の中に置く」という意味です。
これは中置記法というもので、「ちゅうちきほう」と呼びます。
数式やプログラムを記述する方法の1つで、操作対象の中間に
記述することからこう呼ばれています。
では、infixを使ってみましょう。
作成したplus関数の文頭に記述します。
これは、Intというすでにあるデータ型に機能を付加する「拡張機能」
になります。
infix fun Int.plus(x:Int):Int{
return this+x
}
main関数はこう書きます。
上記のthisは、main関数内でいう「5」を指し、
引数は「10」になります。なので、「5 + 10」の計算式になります。
fun main(args: Array<String>) {
println(5.plus(10))
}
また、こうも書けます。
以下は、「.」と「(….)」を省略しています。
こう書くと、言語のような(英文のような)書き方になります。
この書き方ができるのが中置記法の特徴です。
println(2 plus 20)
実行します。
上の出力結果が省略していない書き方で、
下の出力結果は省略形の書き方です。
さらには、前回やった1行での関数の書き方も使えます。
以下は、かけ算の式になります。
infix fun Int.multiply(y:Int):Int = this * y
main関数で呼びましょう。「10×30」という意味になります。
println(10 multiply 30)
実行すると、想定通りの結果が出力されました。
合わせて、String型でも作ってみましょう。
Int型の場合と書き方は同様です。
infix fun String.use(z:String):String {
return this + “今から${z}を使う”
}
main関数も呼びます。
日本語が混ざりますが、確かに言語に近い書き方になりますね。
上記のuse関数でいう「this」が「私は、」で、引数は「自転車」
になります。
println(“私は、” use “自転車”)
実行します。こちらも想定通りです。
無理にこの文法を多様する必要はないと思いますが、
ソースを読み解く場合やコードの理解を深めるためには知っておいて
損はないでしょう。
今回はここまで🤚
では、また次回。