第17回 ~関数を作る~

関数が作れるようになるとスマートで分かりやすいプログラムが書けるようになります。

登場する英単語

英単語読み方解説
functionファンクション「機能」 関数を作成する際に使用
returnリターン「戻る」 値を返すときに使用

チェックポイント

  • 関数は必ず( )カッコカッコがついているのが特徴
local part = Instance.new("Part")
part.Shape = Enum.PartType.Ball
part.Name = "Ball"
part.Anchored = false
local x = math.random(-50,50)
local y = math.random(5,50)
local z = math.random(-50,50)
part.Position = Vector3.new(x,y,z)
part.Parent = game.Workspace
  • 関数は「local function」で始まり、「end」で終わる
  • その後に関数名が続き、( )カッコカッコとする
  • パラメーターが1つもない場合でも( )カッコはつける
local function putBall()
    local part = Instance.new("Part")
    part.Shape = Enum.PartType.Ball
    part.Name = "Ball"
    part.Anchored = false
    local x = math.random(-50,50)
    local y = math.random(5,50)
    local z = math.random(-50,50)
    part.Position =   Vector3.new(x,y,z)
    part.Parent = game.Workspace
end

putBall()
  • 値の受け渡しはパラメータを使用する
  • パラメーターの変数名は自由
local function putPart(shape)
    local part = Instance.new("Part")
    part.Shape = shape
--  part.Name = "Ball"
    part.Anchored = false
    local x = math.random(-50,50)
    local y = math.random(5,50)
    local z = math.random(-50,50)
    part.Position = Vector3.new(x,y,z)
    part.Parent = game.Workspace
end

putPart(Enum.PartType.Ball)
putPart(Enum.PartType.Block)
putPart(Enum.PartType.Cylinder)
  • 複数個のパラメーターが指定できる
  • 値を返したい場合は「return」を使う
local function putPart(shape,pos)
    local part = Instance.new("Part")
    part.Shape = shape
 -- part.Name = "Ball"
    part.Anchored = false
    part.Position = pos
    part.Parent = game.Workspace
end

local function getPosition()
    local x = math.random(-50,50)
    local y = math.random(5,50)
    local z = math.random(-50,50)
    local pos = Vector3.new(x,y,z)
    return pos
end

putPart(Enum.PartType.Ball,getPosition())
putPart(Enum.PartType.Block,getPosition())
putPart(Enum.PartType.Cylinder,getPosition())

  • このように書くと、getPosition関数自体を渡すことになる
  • 関数自体を渡すという処理は、次回、第18回の講座で登場する
putPart(Enum.PartType.Ball,getPosition)

ステップアップ

動画の方では行いませんでしたが、複数の値を返すこともできます。さらに多くの値を渡したい場合は、第22回の講座で登場するテーブルを使用します。

local function getPositionXYZ()
    local x = math.random(-50,50)
    local y = math.random(5,50)
    local z = math.random(-50,50)
    return x,y,z
end

local x,y,z = getPositionXYZ()   -- 関数内のx,y,zと、ここのx,y,zは異なる変数なので、
local a,b,c = getPositionXYZ()   -- このように受け手の変数名が異なっても構わない

返信を残す