KOSEN{BLOG}について

関数の3つの定義 ~Learn Swift for Beginners~

Swift3つの関数の定義

 

プログラミングにおいて重要な関数についての定義方法を見ていきます.

入力に対してブラックボックスを通して出力を行うというものは数学でいうy=f(x)ですね.しかし,プログラミングには3つの関数の定義があります.今回はそれら3つの関数の定義についてトイレットペーパーを買いに行く人の例を用いて説明したいと思います.🧻🧻


 

ノーマルな定義

スクショ編集

func functionName(){
  //色々処理
  let const = 10
}

 

ただの箱と考えていいでしょう.箱に何かしらのものを入れることも出すこともできません.

 

使い方

getPaperという関数を定義します.

func getPaPer(){
                        print(moveRight)
                        print(moveRight)
                        print(moveUp)
                        print(moveLeft)
                        print(moveRight)
                        print(moveUp)
                        print(moveRight)
                        print(moveLeft)
                        print(moveRight)
                        print(moveUp)
                        print(🧻🧻find🧻🧻)
									}

 

 

呼び出し方

getPaper()

 

引数がないのが分かりますよね.引数がないので,自分自身の値をいじることができません.

注意

関数の中で定義したもの自体を外に出すことはできません.

しかし,箱の中に外の世界で定義したもの(グローバル変数)は中と外どちらも行き来することができるので,printしたり中のもので計算することができます.

変数のキャプチャといいます.

var num = 10//グローバル変数

func add2num(){
    num += 2
    print(num)
            }

add2num()
//12
add2num()
//14
add2num()
//16
memo

使用用途としては,グローバル変数同士の計算を行うことが多いです.

 


引数ありの定義

スクショ編集

func functionName(parameter: parameterType){
  //parameterを使った処理
  //色々処理
}

箱が少し変わりました.これは箱の中にものを入れることができるようになったということです.

fx

つまりこれは数学で用いられるf(x)のことです.変数に何かを代入すれば関数が値を計算する.しかし,注意する点としてこれはあくまでも計算だけ,値を返す機能はありません.

つまりy = f(x)のyに値を代入というものができないことになっています.

 

使い方

func getPaper(number:Int){
  var cost = number * 100
  print("Get paper cost is \(cost)")
									}

 

呼び出し方

getPaper(number:3)
//Get paper cost is 300

また,f(x,y,z)これは引数が3つある関数の定義ですが,Swift(すべての言語)でも複数の引数を持たせることができます.


引数と戻り値ありの定義

スクショ編集

またまた,箱の形が変わりました.入力したものを関数で計算して出力する.最初は箱だけだったけどそこから入力と出力がつけ加わった形になっています.

 

func functionName(parameter: parameterType) -> ReturnType{
  //parameterを使った処理
  //色々処理
  
  return ReturnValue
}

出力ができるようになったのでこれは数学でいうy=f(x)の考え方そのものです.

y=fx

 

使い方

func get1Paper(money:Int) -> Int{
 let change = money - 100
  return change
									}

呼び出し方

var change = get1Paper(500)
print("I have \(change) yen")
//I have 400 yen

 

変数に直接代入することができます.引数だけある場合との違いはその関数で得られた情報を関数の外でも使用することができるといった特徴があります.


おまけ

実際にはすべて引数や戻り値は絶対に必要であるということはなく,すべて一番初めの入力と出力がない方法で計算できます.

 

引数や戻り値を使用しない例

var num = 10
var cost = 0
func calcCost(){
    cost = num * 100
            }

calcCost()
print(cost)
//1000

使用する例

func calcCost(num:Int) -> Int{
    return num * 100
}

print(calcCost(num: 10))
//1000

 

上の例ではどちらの方が読みやすいですか?明らかに後者だと思います.そして後者の方が保守性が上がります.

プログラミングを行う上で関数の定義はとても重要なので3つともしっかりとマスターしてください!


今回はトイレットペーパーを用いて関数の説明を行いました.🧻

以上で関数の定義についての説明は終わりです.

 

コメントを残す

メールアドレスが公開されることはありません。