- Ruby 初心者スレッド Part 55
747 :デフォルトの名無しさん[sage]:2014/11/03(月) 12:24:39.05 ID:aZ1lF/ar - >>743
実際に試してみればいい irb(main):001:0> class Point3D < Struct.new("Point3D", :x, :y, :z); end => nil irb(main):002:0> Point3D.superclass => Struct::Point3D Struct.new( .... ) というスタイルを使うと、クラスは名前空間 Struct の下で定義される Point3D と Struct::Point3D は別のオブジェクトだから、 それらの間に継承関係が存在しても何ら問題はない もちろん、以下のようなケースはエラーになる irb(main):001:0> class Struct::Point3D < Struct.new("Point3D", :x, :y, :z); end TypeError: superclass mismatch for class Point3D from (irb):1 from /opt/local/bin/irb:11:in `<main>' irb(main):001:0> class Point3D < Struct.new("::Point3D", :x, :y, :z); end NameError: identifier ::Point3D needs to be constant from (irb):1:in `new' from (irb):1 from /opt/local/bin/irb:11:in `<main>'
|
- 【Python】スクリプト バトルロワイヤル46【pl,rb,php,js】
939 :デフォルトの名無しさん[sage]:2014/11/03(月) 13:32:40.28 ID:aZ1lF/ar - >>938
>個人の好き嫌い、みたいな行き過ぎた価値相対主義は >単なる思考停止、反知性主義な愚か者の思考だと思う。 これのことか.... >青木純の本とか読むと、Smalltakerの宗教じみたキモさ たしかに、思考停止と反知性主義な愚か者の思考だね
|
- Ruby 初心者スレッド Part 55
750 :デフォルトの名無しさん[sage]:2014/11/03(月) 15:24:11.59 ID:aZ1lF/ar - >>748
単純に timeout(1) へ与えたブロック内で Fiber.yield しているので コンテクストが親に切り替わっているからだろ 自分でコンテクストを切り替えておいて、 それでもなお元のコンテクストでタイムアウト例外を補足できると期待するという >>748 の思考回路がわからん Ruby はエスパーではないから >>748 の意図を読み取って振る舞ってはくれないし、 コンテクストを切り替えろというコードの指示に従って忠実に動いているだけ 自分が何を意図してコードを書いているのか、よく考えたほうがいいと思う
|
- Ruby 初心者スレッド Part 55
752 :デフォルトの名無しさん[sage]:2014/11/03(月) 15:41:58.79 ID:aZ1lF/ar - >>749
0、1、とくれば次に期待するのは 2、3、と増加する振る舞いだと思うけど、 なぜか -1 になっている すまんが、-1 になれる上手い方法は思いつけない ちなみに 0、1、ときて最後に N へ到るという多次元配列であれば、 (0..N).inject(array) { |ary, n| ary[index[n]] } でアクセスできると思う
|
- Ruby 初心者スレッド Part 55
758 :デフォルトの名無しさん[sage]:2014/11/03(月) 16:21:40.77 ID:aZ1lF/ar - >>757
>という事でtimeoutのexception_classを指定してみた所、下のrescueで補足するようになりました。 exception_classを指定しなくとも、>>748 のコードのままでも下の rescue で例外は補足されている 下の resucue というコードを rescue => ex; p ex へと書き換えれば、 #<Timeout::Error: execution expired> という出力を確認できるはず >バグではないのかと気になりますが、どうなんでしょうね。 Fiber.yield でコンテクストを親に切り替えた後にタイムアウト例外が発生し、 その例外は切り替わった親の(=下の) resucue で補足されている >>750 で書いたことを繰り返すけど、Ruby は>>748 のコードに従って忠実に動いているはずだ それなのに、なぜこれをバグを感じるのか意味不明だね
|
- Ruby 初心者スレッド Part 55
763 :デフォルトの名無しさん[sage]:2014/11/03(月) 17:12:32.08 ID:aZ1lF/ar - >>760
同じコードであっても、Ruby のバージョンによって振る舞いが変わるみたいだね $ ruby1.9 timeout2.rb prog.rb:13:in `sleep': execution expired from timeout2.rb:13:in `<main>' $ ruby2.0 timeout2.rb prog.rb:13:in `sleep': execution expired from timeout2.rb:13:in `<main>' $ ruby2.1 timeout2.rb #<Timeout::Error: execution expired>
|