Julia早引きノート[10]関数 (2)応用編


関数 (2)応用編(書き方例)

note10
◆型指定
 # 引数はInt型(整数)を指定、返り値はFloat64(実数)を指定
 function comsumption_tax(price::Int)::Float64
     tax_rate = 1.08
     return tax_rate * price
 end

◆型指定(一行表示)
 comsumption_tax(price::Int)::Float64 = tax_rate * price


◆可変長引数
 ■例文1
  function summation(v...)
      total = 0
      for i in v
          total += v[i]
      end
      return total
  end

 ■例文2
  function summation2(v::Int...)
      total = 0
      for i = 1:length(v)
          total += v[i]
      end
      return total
  end


◆オプショナル引数
 # 引数の初期値を予め設定(下例:v2の初期値を100に設定)
 function foptional(v1, v2=100)
     total = v1 + v2
     return total
 end


◆キーワード引数
 # 区切り文字に;(セミコロン)を使用(詳細は下部の解説を参照)
 function car(length, width; color="white", price=10000)
     println("special car:")
     println(" lenth x width = ", length, " x ", width)
     println(" color = ", color)
     println(" price = ", price)
 end


◆匿名関数
 ■例文1
  # 引数は1つのみ指定可
  price = x -> x * 1.08

 ■例文2
  # 複数行の場合は、begin~endで囲う
  nebiki = x -> begin
      price = x * 0.9
      return price * 1.08
  end

解説

(1)型指定

型の指定は必須ではありませんが、指定することも可能です。
引数だけの型指定でも構いませんし、返り値だけの型指定でも構いません。
型が一致しない関数を呼び出すとエラーが発生します。

(2)可変長引数

◆要約
 ①引数の数を変えて使用することができます。
 ②設定できる引数は、最後の引数だけです。
 ③2つ以上の引数を可変長にすることもできません。
 ④可変長引数に型指定設定できます。

①引数の数を変えて使用することができます。
下図の例では、引数が1つ、2つ、3つの場合です。

引数に設定する値はリスト(実際にはタプル)として取り出しますので、以下のようにループ部分を書くこともできます。

②設定できる引数は、最後の引数だけです。
以下のような書き方はできません。

note10
function summation(v..., x)
    ...

③2つ以上の引数を可変長にすることもできません。
④可変長引数に型指定設定できます。
可変長引数に型指定をする場合は、以下のように設定します。

note10
function summation(v::Int...)
    ...

(3)オプショナル引数

◆要約
 ①引数の初期値を予め設定しておくことができます。
 ②複数の引数をオプショナルに指定することができます。
 ③オプショナル引数は引数の末尾にまとめて書きます。

①引数の初期値を予め設定しておくことができます。
引数の値が省略された場合はこの初期値が適用されます。

②複数の引数をオプショナルに指定することができます。

③オプショナル引数は引数の末尾にまとめて書きます。
以下のような書き方はできません。

note10
function foptional(v2=10, v1)
    ...

(4)キーワード引数

複数の引数のうち、特定の引数の値を特に設定したい場合に使用します。
以下の例では初めの2つの引数は通常の引数で、さらに、複数ある引数のうちpriceの値を設定した例です。
通常の引数とキーワード引数の区切りに ; (セミコロン)を使用する点に注意して下さい。

(5)匿名関数

アロー関数によく似た関数です。
◆要約
 ①引数は一つのみ指定できます。
 ②複数行の処理を定義する場合は、begin~endで囲みます。

①引数は一つのみ指定できます。
引数を複数設定することはできません。

②複数行の処理を定義する場合は、begin~endで囲みます。
以下の例では2行の処理を行っています。

もくじ

Julia早引きノート[01]変数・定数の使い方
Julia早引きノート[02]算術式、演算子
Julia早引きノート[03]複素数
Julia早引きノート[04]正規表現
....

もくじを開く

Julia早引きノート[05]if文
Julia早引きノート[06]ループ処理
Julia早引きノート[07]try, catch, finally
Julia早引きノート[08]変数の型(Int, Float, Bool, Char, String)
Julia早引きノート[09]関数 (1)基本編
Julia早引きノート[10]関数 (2)応用編
Julia早引きノート[11]Nothing型
Julia早引きノート[12]複合型(Composite Type)型
Julia早引きノート[13]タプル
Julia早引きノート[14]リスト(Array型一次元配列)
Julia早引きノート[15]辞書(dictionary)
Julia早引きノート[16]集合
Julia早引きノート[17]多次元配列 (1)初期化
Julia早引きノート[18]多次元配列 (2)様々な演算や関数
Julia早引きノート[19]多次元配列 (3)サブ配列
Julia早引きノート[20]ファイル入出力
Julia早引きノート[21]JSON、XMLファイルの入出力
Julia早引きノート[22]Python関数やPythonモジュールの呼び出し
Julia早引きノート[23]JuliaでのMatplotlibによるグラフ描画
Julia早引きノート[24]CSVFiles(DataFrameとの連携)
Julia早引きノート[25]線形代数演算(ベクトル・行列計算)
(※引き続きコンテンツを増やしていきます)

関連情報

Julia - 公式ページ
https://julialang.org/

Julia - 日本語公式ドキュメント
https://julia-doc-ja.readthedocs.io/ja/latest/index.html

初めてのJuliaとインストール (Windows & Linux)
https://qiita.com/ttlabo/items/b05bb43d06239f968035

Julia - Mathematics
https://docs.julialang.org/en/v1/base/math/

ご意見など

ご意見、間違い訂正などございましたらお寄せ下さい。