octave3.0で2とちがう挙動な件

  • このエントリーをはてなブックマークに追加
  • Pocket

そうそうoctaveは3.0になって無名関数が使えるようになりました.これで多少ましになったかなーとか思った.

しかし,2のコードをそのまま流し込むとエラーになるなんで.とか思った.
こういうエラー.


octave:4> b{1}.p = 1
b =

{
  [1,1] =
  {
    p =  1
  }

}

octave:5> b{1}.p.a = 1
error: scalar cannot be indexed with .
error: assignment to structure element failed
error: assignment failed, or no method for `cell = scalar'

2のときはp = 1を p.a = 1で上書きできてたけどできなくなったってことですかね.

試してみたら,一こめは上書きしてくれたけど,にこめは上書きしてくれない.パーサーの問題?なのか,機能拡張したら干渉したのでわざとそういう仕様にしたのかしらんですけど.しかし,octaveはこういう意味不明というか言語仕様がはっきりしないというかわかりにくいのが多い.裏ではcを叩いているみたいですが,こういうことがあると,pythonで書いてまったほうが早いなーとか思う.


octave:5> c = 1
c =  1
octave:6> c.a = 1
c =
{
  a =  1
}

octave:7> c.a.b = 1
error: scalar cannot be indexed with .
error: assignment to structure element failed
error: assignment failed, or no method for `struct = scalar'

まあ,今回は4番目のコードはいらんので削って使っていますが.

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す