… @outer : NilClass | TypeProfiler::ExecutionPoint | any # 一番外側のEPをたどるコード ep = EP.new(…) while ep.outer ep = ep.outer #=>「NilClass#outerを呼ぶかも」警告が出る end ep.pc #=>「NilClass#pcを呼ぶかも」警告が出る
# このメソッドは使われない def vadd(b) # b: any Vec.new( @x + b.x, # any @y + b.y, # any @z + b.z, # any ) end end class Vec @x: Float | any @y: Float | any @z: Float | any # 今はチートコードを追加(広義の型注釈?) if _ = false v = Vec.new(0.0,0.0,0.0) v.vadd(v) end vaddをanyで呼び出すので @xにanyが記録される 記録されない特殊な anyで解決できる?
型注釈なしの記述は疑いなくシンプル • 型プロファイラが解析できる≒素直な良いコード? 37 def foo(n: Integer | String) : Integer | String p n end foo(1) foo("str") def foo(n) p n end foo(1) foo("str") vs.