こんにちは😀
今回は、関数の応用として、可変長引数をみてみます。
可変長引数とは、与える引数の個数を変えることができ、
「vararg」を使用して表します。
実際に書いてみましょう。
goTravel関数を作成し、1行目の引数に「vararg」を記載します。
これで可変長引数が使用できます。
fun goTravel(vararg areas:String):String {
var allAreas = “”
for (area in areas) {
allAreas = allAreas + area + “と”
}
allAreas = allAreas.dropLast(1)
return “今回の旅行は、${allAreas}に行きます。”
}
後は、引数をそのセットされている数の分だけfor文で回して、
変数allAreasに追加しています。
なお、11行目のdropLast構文は1番後ろからの指定の文字数
を削除します。
上記だと「1」を指定しているので一番最後の1文字「と」を
削除しています。
「3」を指定すれば、一番最後から数えて3文字を削除します。
このgoTravel関数を、main関数で呼び出しましょう。
fun main(args: Array<String>) {
println(goTravel(“大阪”,”姫路”,”滋賀”))
}
実行します。
引数の文字をセットして出力しています。
複数の要素をセットする点においては、使い方としては配列に
似ていますね。
配列に似ているからと言って、例えば、array(配列)を可変長引数に
渡すと以下のようにエラーになってしまいます。
ただし、こうすればOKです。
arrayOfの前に「*」(spread演算子)を追加します。
spread演算子とは、配列やオブジェクトの要素を展開する演算子です。
つまりここでは、arrayOfの要素を1つ1つ取り出して引数にセット
していることになります。
こうなると、もともと配列を引数としてセットする意味もなくなり
ますね。
println(goTravel(*arrayOf(“福岡”,”長崎”,”熊本”)))
では、実行します。
想定通り出力できました。
使える表現の幅を広げる意味では、今回の可変長引数も知っておくと
いろいろな状況での処理に対応できるようになります。
今回はここまで🤚
では、また次回。
コメント