こちらの問題の回答です🐜
回答例
スクリプト例と出力結果です。
<スクリプト例> pointpmove.jl
mutable struct Point x::Float64 y::Float64 end function movex!(p::Point, shift::Float64) p.x = p.x + shift end function movey!(p::Point, shift::Float64) p.y = p.y + shift end function main() # xy座標点P p = Point(2.0, 3.0) # 初期位置確認 println(p) # 移動 movex!(p, 1.5) movey!(p, -0.5) # 確認 println(p) end if abspath(PROGRAM_FILE) == @__FILE__ main() end
<出力結果>
Point(2.0, 3.0) Point(3.5, 2.5)
実は、複合体のフィールドはimmutableで値を変更できません。したがって、上記では定義時にmutable
を付けて、変更できるようにしています(詳細はこちら)。
また、movex!
やmovey!
の末尾に!
は、引数の一部を変更することを示します。
回答例は以上です。
続きはこちら。