1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2020-10-25

###関数 (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つの場合です。
image.png
引数に設定する値はリスト(実際にはタプル)として取り出しますので、以下のようにループ部分を書くこともできます。
image.png
②設定できる引数は、最後の引数だけです。
以下のような書き方はできません。

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

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

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

####(3)オプショナル引数

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

①引数の初期値を予め設定しておくことができます。
引数の値が省略された場合はこの初期値が適用されます。
image.png
②複数の引数をオプショナルに指定することができます。
image.png
③オプショナル引数は引数の末尾にまとめて書きます。
以下のような書き方はできません。

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

####(4)キーワード引数

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

####(5)匿名関数

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

①引数は一つのみ指定できます。
引数を複数設定することはできません。
image.png
②複数行の処理を定義する場合は、begin~endで囲みます。
以下の例では2行の処理を行っています。
image.png

##もくじ
Julia早引きノート[01]変数・定数の使い方
Julia早引きノート[02]算術式、演算子
[Julia早引きノート[03]複素数]
(https://qiita.com/ttabata/items/225c77a4d71fafc3e482)
Julia早引きノート[04]正規表現
....

もくじを開く
[Julia早引きノート[05]if文] (https://qiita.com/ttabata/items/4f0bcff1e32f60402dfb) [Julia早引きノート[06]ループ処理] (https://qiita.com/ttabata/items/2a53825101b0b75fb589) [Julia早引きノート[07]try, catch, finally] (https://qiita.com/ttabata/items/1d6fe990526c99b65b5f) [Julia早引きノート[08]変数の型(Int, Float, Bool, Char, String)] (https://qiita.com/ttabata/items/2b84a826e39bfe432b62) [Julia早引きノート[09]関数 (1)基本編] (https://qiita.com/ttabata/items/d9b4f2728ec0dbcc6394) [Julia早引きノート[10]関数 (2)応用編] (https://qiita.com/ttabata/items/462e216c43d519f1969d) [Julia早引きノート[11]Nothing型] (https://qiita.com/ttabata/items/0e5a6b21968d8752cf0b) [Julia早引きノート[12]複合型(Composite Type)型] (https://qiita.com/ttabata/items/27469216a3c33101c825) [Julia早引きノート[13]タプル] (https://qiita.com/ttabata/items/ebe35dbfec4efbc1c29a) [Julia早引きノート[14]リスト(Array型一次元配列)] (https://qiita.com/ttabata/items/7528863ccbb282e8260d) [Julia早引きノート[15]辞書(dictionary)] (https://qiita.com/ttabata/items/77a4f1d02b51d067bfb7) [Julia早引きノート[16]集合] (https://qiita.com/ttabata/items/ca8137922a785122037e) [Julia早引きノート[17]多次元配列 (1)初期化] (https://qiita.com/ttabata/items/01fecbd14363460a27a6) [Julia早引きノート[18]多次元配列 (2)様々な演算や関数] (https://qiita.com/ttabata/items/f35896a5fa005fba7fbc) [Julia早引きノート[19]多次元配列 (3)サブ配列] (https://qiita.com/ttabata/items/045c00406fe45270b42e) [Julia早引きノート[20]ファイル入出力] (https://qiita.com/ttabata/items/5a99c3998060d161ace8) [Julia早引きノート[21]JSON、XMLファイルの入出力] (https://qiita.com/ttabata/items/65ebec11830271f9be71) [Julia早引きノート[22]Python関数やPythonモジュールの呼び出し] (https://qiita.com/ttabata/items/3afc8cef40d1e98a7b17) [Julia早引きノート[23]JuliaでのMatplotlibによるグラフ描画] (https://qiita.com/ttabata/items/96a0e172addfac690cca) [Julia早引きノート[24]CSVFiles(DataFrameとの連携)] (https://qiita.com/ttabata/items/51446731a703b5aca524) [Julia早引きノート[25]線形代数演算(ベクトル・行列計算)] (https://qiita.com/ttabata/items/5abe14d5c510e8ca0f54) (※引き続きコンテンツを増やしていきます)

##関連情報

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

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

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

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

##ご意見など

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

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?