ProgrammingのTipなど

関数

通常の関数適宜

function 関数名(引数)
  処理
  戻り値
end

return文を書いた場合

function 関数名(引数)
  処理
  return 戻り値
end

return文は省略できます
return文を省略した場合、最後の文の数値が戻り値になります

引数の型も指定する必要はなくjulia側で自動で判定してくれます(多重ディスパッチ機能)
もちろん引数の型をすることもできます

以下ではaとbを引数として渡して
その足し算をしてから答えを戻り値として返すaddという関数を作ってみます

function add(a, b)
  a + b
end

と定義して
5+7の計算
add(5,7)
答え
>>12

と使うことができます



驚くべきは引数の型を指定しなくてよいので
整数でも実数でも複素数や行列までそのままで1つの関数を作るだけで
そのまま計算できてしまいます
(ただし数学上計算できないものはもちろんエラーになります)

整数
x=10
y=5
複素数
c1 = 2 + 6im
c2 = 1 + 3im
行列
m1 = [2,5;3,4]
m2 = [3,2;5,2]

add(x,y)
>>15

add(c1,c2)
>>3+9im

add(m1,m2)
>>[5,7;8,6]

行列や複素数までそのまま同じ関数で計算できるのはjuliaの特徴であり
他のプログラミング言語に比べてもかなり強力な機能です


引数の型を指定して書くこともできます
これにより引数の型によって同じ関数名で違う処理を分けてすることができます
つまりC++言語などでのオーバーロード関数と同じことができるわけです

引数がInt64の整数の場合だけに指定したいとき
整数(Int64)の場合は足し算

function calcXY(x::Int64, y::Int64)
  x + y
end

しかし実数(Float64)の場合は引き算にしたいときは

function calcXY(x::Float64, y::Float64)
  x - y
end

数学的な関数定義

関数はイコール(代入)を使った書き方もできます
ただし1行までです
短い関数ならこちらの方が便利でしょう

add(a,b) = a + b

add(1,2)
>>3


if文とreturnを使った例

引数aが10未満であれば9を返しreturn文によって関数を途中で抜け出します
そうでなければ1を返します

function testswitch(a)
  if a < 10
    return 9
  end
  1
end

testswitch(8)
>>9
testswitch(15)
>>1

    
 関数の返す戻り値のTypeを指定する
 
 戻り値を実数のFloat16で返したい場合

 function add(a,b)::Float16
   a + b
 end
 
 add(5,2)
 >>Float16(7)
 

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

管理人/副管理人のみ編集できます