6.2 スコープ (有効範囲)

Julia の変数のスコープは、かなり複雑である。 疑問が生じたら、マニュアルを熟読するしかないようだ。 現時点で全然出来ていない。(こういう基本的な部分で、 習得に手間がかかるのは辛いところだ…)


ここでは、 自分が動くプログラムを書くために、 最低限知っていれば何とかなりそうなレベルを目指す (弱気)。


まずは基本的なところを説明する。 以下は、M. Hiro [5] の写し (ありがとうございます)。

mysum.jl
function mysum(v)
  s=0 # s=zero(v[1]) とすべき?
  for i=1:length(v)
    s=s+v[i]
  end
  return s
end
julia> include("mysum.jl")
mysum (generic function with 1 method)

julia> mysum(1:10)
55
これは納得できるだろうが、
julia> v=1:10;
julia> s=0;
julia> for i=1:length(v)
         s=s+v[i]
       end
ERROR: UndefVarError: s not defined
これを回避するには、例えば global という指示を入れて
julia> v=1:10;
julia> s=0;
julia> for i=1:length(v)
         global s
         s=s+v[i]
       end
julia> s
55
とすることが出来るが、こういうプログラムの書き方はしないことにする。

今のところ、次のような作業の仕方が良いと考えている。 julia[enter] で REPL を起動して、 何かまとまったことをするときは、 テキスト・エディターで関数を定義するプログラムを書き、 それを include() して、 関数を呼び出す。



桂田 祐史