Issue #6643 has been reported by akr (Akira Tanaka). ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643 Author: akr (Akira Tanaka) Status: Open Priority: Normal Assignee: Category: Target version: IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-06-25 12:32
on 2012-06-25 16:18
(6/25/12 6:32 AM), akr (Akira Tanaka) wrote: > Assignee: > とかけるようにする、ということです。 > > IO::SEEK_END と等価な指定として :end, > IO::SEEK_CUR と等価な指定として :cur, > IO::SEEK_SET と等価な指定として :set を +1. というかIOまわりの定数は全部シンボルで指定したいぐらい。。
on 2012-06-25 16:31
(2012/06/25 23:17), KOSAKI Motohiro wrote: >> > >> > IO::SEEK_END と等価な指定として :end, >> > IO::SEEK_CUR と等価な指定として :cur, >> > IO::SEEK_SET と等価な指定として :set を > +1. > というかIOまわりの定数は全部シンボルで指定したいぐらい。。 これ,例えば IO::SEEK_END も値が :end になるんでしょうか(なっちゃいけ ない理由はあるんかな).
on 2012-06-25 16:38
At Mon, 25 Jun 2012 19:32:06 +0900, akr (Akira Tanaka) wrote: > IO#seek $B%a%=%C%I$N(B whence $B0z?t$H$7$F%7%s%\%k$r<u$1IU$1$k$h$&$K$7$^$;$s$+!#(B > > $B$D$^$j!"(B > io.seek(0, IO::SEEK_END) > $B$N$+$o$j$K(B > io.seek(0, :end) > $B$H$+$1$k$h$&$K$9$k!"$H$$$&$3$H$G$9!#(B > > IO::SEEK_END $B$HEy2A$J;XDj$H$7$F(B :end, > IO::SEEK_CUR $B$HEy2A$J;XDj$H$7$F(B :cur, :current $B$,$h$$$H;W$$$^$9!#(B
on 2012-06-25 21:53
2012$BG/(B6$B7n(B25$BF|(B 23:31 SASADA Koichi <ko1@atdot.net>: > $B!!$3$l!$Nc$($P(B IO::SEEK_END $B$bCM$,(B :end $B$K$J$k$s$G$7$g$&$+!J$J$C$A$c$$$1(B > $B$J$$M}M3$O$"$k$s$+$J!K!%(B $B$7$F$b$$$$$s$G$9$,!":#$O$7$F$$$^$;$s!#(B $BCM$K6=L#$r;}$D4qFC$J?M$,$$$k$+$b$7$l$J$$$HF,$r$h$.$C$?$@$1$G$9$,!#(B
on 2012-06-25 22:11
2012$BG/(B6$B7n(B25$BF|(B 23:37 SATOH Fumiyasu <fumiyas@osstech.jp>: >> IO::SEEK_CUR $B$HEy2A$J;XDj$H$7$F(B :cur, > > :current $B$,$h$$$H;W$$$^$9!#(B :current $B$K$7$F$b(B IO::SEEK_CUR $B$h$j$bC;$$$+$i$=$l$G$b$$$$$+$J$!!#(B $B$"$k$$$O!"(B:cur $B$H(B :current $B$NN>J}<u$1IU$1$k$H$9$k$+!#(B
on 2012-06-26 15:01
$B?\F#$G$9!#(B In <CANjopZHFG3ZQ+VA_dJPCAxn8UnQ6FqqfyfOyxLy536tkwqaWbA@mail.gmail.com> "[ruby-dev:45843] Re: [ruby-trunk - Feature #6643][Open] io.seek(off, :end)" on Tue, 26 Jun 2012 05:10:47 +0900, Tanaka Akira <akr@fsij.org> wrote: >>> IO::SEEK_CUR $B$HEy2A$J;XDj$H$7$F(B :cur, >> >> :current $B$,$h$$$H;W$$$^$9!#(B > > :current $B$K$7$F$b(B > IO::SEEK_CUR $B$h$j$bC;$$$+$i$=$l$G$b$$$$$+$J$!!#(B > > $B$"$k$$$O!"(B:cur $B$H(B :current $B$NN>J}<u$1IU$1$k$H$9$k$+!#(B $BN>J}$G$b$$$$5$$,$7$^$9!#(B $BM}M3$O(B :cur$B$O(BC$B$N(BSEEK_CUR$B$+$iO"A[$9$k!J@N$J$,$i$N!K?MMQ$G!"(B :current$B$O(BSEEK_*$B$r0U<1$7$J$/$F$b8+$F$9$0$o$+$j$?$$!J:G6a$N!K?MMQ(B $B$H$$$&$h$&$K!J;d$K$O!K<+A3$JDs6!M}M3$r$D$1$i$l$k$+$i$G$9!#(B
on 2012-06-26 15:56
$B@>;3OB9-$G$9!#(B At Tue, 26 Jun 2012 05:10:47 +0900, Tanaka Akira wrote: > > >> IO::SEEK_CUR $B$HEy2A$J;XDj$H$7$F(B :cur, > > > > :current $B$,$h$$$H;W$$$^$9!#(B > > :current $B$K$7$F$b(B > IO::SEEK_CUR $B$h$j$bC;$$$+$i$=$l$G$b$$$$$+$J$!!#(B > > $B$"$k$$$O!"(B:cur $B$H(B :current $B$NN>J}<u$1IU$1$k$H$9$k$+!#(B $BN>J}$,NI$$$K0lI<!#(B $B$=$l$H$OJL$K(B $B%=%1%C%H%i%$%V%i%j$N2~A1(B http://rubykaigi.org/2009/ja/talks/19M02 $B$+$iO"A[$9$k$H6&DL$N(B prefix $B$r>JN,$7$?%7%s%\%k$K$J$j$=$&$J$N$G!"(B $BBgJ8;z$N(B :END $B$d(B :CUR $B$J$I$K$J$k$N$+$H;W$C$?$N$G$9$,!"(B $B>.J8;z$K$7$?$N$O$J$<$G$7$g$&$+(B?
on 2012-06-27 02:18
2012$BG/(B6$B7n(B26$BF|(B 22:56 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>: > $B$+$iO"A[$9$k$H6&DL$N(B prefix $B$r>JN,$7$?%7%s%\%k$K$J$j$=$&$J$N$G!"(B > $BBgJ8;z$N(B :END $B$d(B :CUR $B$J$I$K$J$k$N$+$H;W$C$?$N$G$9$,!"(B > $B>.J8;z$K$7$?$N$O$J$<$G$7$g$&$+(B? $B$"$!!"$?$7$+$K!#BgJ8;z$,$$$$$+$J$!!#(B
on 2012-06-27 20:51
> $B%=%1%C%H%i%$%V%i%j$N2~A1(B > http://rubykaigi.org/2009/ja/talks/19M02 > > $B$+$iO"A[$9$k$H6&DL$N(B prefix $B$r>JN,$7$?%7%s%\%k$K$J$j$=$&$J$N$G!"(B > $BBgJ8;z$N(B :END $B$d(B :CUR $B$J$I$K$J$k$N$+$H;W$C$?$N$G$9$,!"(B > $B>.J8;z$K$7$?$N$O$J$<$G$7$g$&$+(B? Socket$B$N>l9g$O!"1QC18l$+$i$OA[A|$7$E$i$$F0:n$r$9$k%1!<%9$,$^$^$"$k$N$G(B C$BM3Mh$@$+$i!";zLL$r?.$8$:$K%^%K%e%"%k$A$c$s$HFI$_$d$,$l$H$$$&%K%e%"%s%9$,(B $BI:$C$F$$$F!"BgJ8;z$,$9$4$/$$$$46$8$@$C$?$N$G$9$,!"$3$A$i$O$I$&$J$s$G$7$g$&$M!#(B $BBgJ8;z$G(B :CURRENT $B$C$F$/$I$/$J$$$G$9!)(B C$BM3Mh$A$C$/$JL>A0$K$9$k$J$i(B CUR$B$@$1$G$$$$$h$&$J5$$,$9$k$J$"(B # bikeshed$B$C$F$I$&$7$F$3$&$b?M$r$R$-$D$1$k$N$+(B
on 2012-06-28 02:53
$B$3$s$K$A$O!"$J$+$`$i(B($B$&(B)$B$G$9!#(B
In message "[ruby-dev:45864] Re: [ruby-trunk - Feature #6643][Open]
io.seek(off, :end)"
on Jun.28,2012 03:51:25, <kosaki.motohiro@gmail.com> wrote:
> Socket$B$N>l9g$O!"1QC18l$+$i$OA[A|$7$E$i$$F0:n$r$9$k%1!<%9$,$^$^$"$k$N$G(B
> C$BM3Mh$@$+$i!";zLL$r?.$8$:$K%^%K%e%"%k$A$c$s$HFI$_$d$,$l$H$$$&%K%e%"%s%9$,(B
>
$BI:$C$F$$$F!"BgJ8;z$,$9$4$/$$$$46$8$@$C$?$N$G$9$,!"$3$A$i$O$I$&$J$s$G$7$g$&$M!#(B
$BBgJ8;z$G(B :CURRENT $B$C$F$/$I$/$J$$$G$9!)(B
> C$BM3Mh$A$C$/$JL>A0$K$9$k$J$i(B CUR$B$@$1$G$$$$$h$&$J5$$,$9$k$J$"(B
$B$3$&$$$&;~$O92$F$:A{$,$:B>$N8@8l$NNc$r$G$9$M(B...
C++: std::ios$B$N(Bbeg, cur, end
SEEK_SET$B$,(Bbeg$B$K$J$C$F$k$3$H$,L\$r0z$-$^$9$M!#(B
.NET: SeekOrigin$B$N(BBegin, Current, End
$B$3$C$A$O%U%k%M!<%`!#$d$C$Q$j(BSEEK_SET$B$O(BBegin$B$K$J$j$^$9!#(B
$BB>$K$bD4$Y$?$s$G$9$,!"(BSEEK_SET$BAjEv$7$+Ds6!$7$J$$$H$+!"(BC$B$NDj?t(B
$B$NCM(B(0,1,2)$B$r;XDj$9$k$7$+$J$/$FL>A0$,IU$$$F$J$$$H$+!"$=$s$J$s(B
$B$,B?$+$C$?$G$9$M(B...
> # bikeshed$B$C$F$I$&$7$F$3$&$b?M$r$R$-$D$1$k$N$+(B
$B$$$d$^$C$?$/!#(B
$B$=$l$G$O!#(B
on 2012-06-28 05:26
> > $B$+$iO"A[$9$k$H6&DL$N(B prefix $B$r>JN,$7$?%7%s%\%k$K$J$j$=$&$J$N$G!"(B > > $BBgJ8;z$N(B :END $B$d(B :CUR $B$J$I$K$J$k$N$+$H;W$C$?$N$G$9$,!"(B > > $B>.J8;z$K$7$?$N$O$J$<$G$7$g$&$+(B? > > $B$"$!!"$?$7$+$K!#BgJ8;z$,$$$$$+$J$!!#(B $B$I$A$i$+$@$1$K$7$?$$M}M3M}M3$,FC$K$J$$$N$J$i!"BgJ8;z$b>.J8;z$b(B $BN>J}<u$1IU$1$k$h$&$K$9$l$PNI$$$N$G$O$J$$$G$7$g$&$+!#(B
on 2012-07-14 11:50
Issue #6643 has been updated by ko1 (Koichi Sasada). Status changed from Open to Assigned Assignee set to akr (Akira Tanaka) ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-28115 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-10-16 13:47
Issue #6643 has been updated by Glass_saga (Masaki Matsushita). こんにちは。 (Mon, 25 Jun 2012 23:31:12 +0900), SASADA Koichi wrote: > これ,例えば IO::SEEK_END も値が :end になるんでしょうか(なっちゃいけない理由はあるんかな). IO::SEEK_XXXの値もSymbolにした上でSymbolを受け付けるIO#seekを作ってみたところ、StringIOで引っかかりました。 ext/stringio/stringio.cのstrio_seek()が、IO::SEEK_XXXはFixnumであるという前提の元に書かれているので、値を変えてしまうと動きません。 これがStringIOだけなら良いのですが、サードパーティの拡張ライブラリにも同様のものがあるかも知れません。 ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-30882 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-10-16 14:37
Issue #6643 has been updated by Glass_saga (Masaki Matsushita). File patch.diff added IO::SEEK_XXXの値は従来のままとして、whence引数にIntegerもSymbolも受け付けるIO#seekを作ってみました。 Symbolとしては、:set, :cur, :current, :endを大文字小文字を区別せず受け付けます。 これで互換性を崩さずにSymbolも渡せるようになるので良いんじゃないかと思うのですが、いかがでしょうか。 ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-30883 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-10-16 14:49
Issue #6643 has been updated by kou (Kouhei Sutou). "type mismatch: %s given"というエラーメッセージに、「本当はIntegerかSymbolで指定して欲しかったんだよ!」みたいな情報が入っていると、間違ったオブジェクトを指定してしまった時にどうすればうまく動くようにできるかがわかりやすくなってうれしいなぁと思いました! ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-30884 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-10-17 01:53
Issue #6643 has been updated by Glass_saga (Masaki Matsushita). Kouhei Sutou wrote: > "type mismatch: %s given"というエラーメッセージに、「本当はIntegerかSymbolで指定して欲しかったんだよ!」みたいな情報が入っていると、間違ったオブジェクトを指定してしまった時にどうすればうまく動くようにできるかがわかりやすくなってうれしいなぁと思いました! "%s is not an Integer or Symbol"や、"whence must be an Integer or Symbol"が良いでしょうか。 ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-30908 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-10-17 14:56
Issue #6643 has been updated by kou (Kouhei Sutou). 個人的には(1)間違った値と(2)間違っている理由と(3)期待する値が入ったエラーメッセージがあると直す時に嬉しいので、今ある案がまざった"whence must be an Integer or Symbol: %s given"みたいなのがいいんじゃないかと思います! (自分が書くときは"whence must be an Integer or Symbol: <%s>"みたいに間違った値を「<>」とかの記号で囲んだりします。空文字列だったときにわかりづらいので。。。) ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-30948 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-10-22 04:09
Issue #6643 has been updated by Glass_saga (Masaki Matsushita). File patch2.diff added Kouhei Sutou wrote: > 個人的には(1)間違った値と(2)間違っている理由と(3)期待する値が入ったエラーメッセージがあると直す時に嬉しいので、今ある案がまざった"whence must be an Integer or Symbol: %s given"みたいなのがいいんじゃないかと思います! なるほど。確かにその3つの情報が入っていると直す時に嬉しいですね。 エラーメッセージを改善したpatchを添付します。 コメントにも修正を加えています。 ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-31156 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-10-23 14:04
Issue #6643 has been updated by kou (Kouhei Sutou). ありがとうございます! 反対している人はいないので、コミットしていいんじゃないかなぁと思います。 ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-31443 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-10-30 00:48
Issue #6643 has been updated by ko1 (Koichi Sasada). Target version set to 2.0.0 田中さんに一応聞いておきたいところ. ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-31946 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: 2.0.0 IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-10-30 05:31
2012$BG/(B10$B7n(B30$BF|(B 8:47 ko1 (Koichi Sasada) <redmine@ruby-lang.org>: > > Issue #6643 has been updated by ko1 (Koichi Sasada). > > Target version set to 2.0.0 > > $BEDCf$5$s$K0l1~J9$$$F$*$-$?$$$H$3$m!%(B $B:G?7$N%Q%C%A$O3NG'$7$F$$$J$$$N$G$9$,!"(B IO::SEEK_* $B$NCM$r%7%s%\%k$KJQ$($F$7$^$&$N$O$I$&$J$N$+$J$!!#(B StringIO $B$O=$@5$9$l$P:Q$`$o$1$G$9$,!"(B StringIO $B0J30$K$b$@$l$+B>$N?M$,(B IO $B$b$I$-$r:n$C$F$$$k2DG=@-$O$"$C$F!"(B $B$=$&$$$&$b$N$KBP$9$kHs8_49@-$K$J$j$^$9$h$M$'!#(B IO::SEEK_* $B$rJQ$($k$H(B io.seek(IO::SEEK_END) $B$H=q$$$F$b<:GT$K$J$k$H$$$&(B $BMxE@$O$"$k$N$G$9$,!"7c$7$$$J$!!#(B
on 2012-10-31 14:23
Issue #6643 has been updated by Glass_saga (Masaki Matsushita). Akira Tanaka wrote: > StringIO は修正すれば済むわけですが、 > StringIO 以外にもだれか他の人が IO もどきを作っている可能性はあって、 > そういうものに対する非互換性になりますよねぇ。 そうですね。 最新のパッチ(patch2.diff)では、そういう懸念があるのでIO::SEEK_*の値は変えずにIntegerもSymbolも受け付けるようにしています。 ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-32113 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: 2.0.0 IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-11-04 03:14
Issue #6643 has been updated by Glass_saga (Masaki Matsushita). patch2.diff(IO::SEEK_*の値は変えないで、新たにSymbolも大文字小文字を無視して受け付けるようにしたpatch)をコミットしたいのですが、反対はありませんか? しばらく待って反対がなければ、入れてしまおうと思います。 ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-32323 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: 2.0.0 IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-11-06 11:55
2012$BG/(B10$B7n(B31$BF|(B 22:23 Glass_saga (Masaki Matsushita) <glass.saga@gmail.com>: > > Issue #6643 has been updated by Glass_saga (Masaki Matsushita). > $B$=$&$G$9$M!#(B > $B:G?7$N%Q%C%A(B(patch2.diff)$B$G$O!"$=$&$$$&7|G0$,$"$k$N$G(BIO::SEEK_*$B$NCM$OJQ$($:$K(BInteger$B$b(BSymbol$B$b<u$1IU$1$k$h$&$K$7$F$$$^$9!#(B $B$9$$$^$;$s!#<:Ni$7$^$7$?!#(B (redmine $B$,Mn$A$F$$$k$H$-$K%a!<%k$r=q$/$N$G$O$J$+$C$?(B...) $B%Q%C%A$r8+$F;W$C$?$N$G$9$,!"(B:eNd $B$H$+$^$G<u$1IU$1$F$$$k$N$O!"(B $B<u$1IU$1$9$.$G$O$J$$$+$J$!!"$H$$$&5$$,$7$^$9!#(B % ./ruby -ve 'open("NEWS") {|f| f.seek(0, :eNd); p f.pos }' ruby 2.0.0dev (2012-11-06 trunk 37493) [x86_64-linux] 10175 $B$^$?!"%(%i!<%a%C%;!<%8$K=P$F$/$k$N$O!">.J8;z$KJQ49$7$?8e$N$b$N$K(B $B$J$C$F$$$^$9$,!"$3$l$O%(%i!<%a%C%;!<%8$H$7$F@53N$G$O$J$$$J$!!"$H;W$$$^$7$?!#(B % ./ruby -ve 'open("NEWS") {|f| f.seek(0, :FOO); p f.pos }' ruby 2.0.0dev (2012-11-06 trunk 37493) [x86_64-linux] -e:1:in `seek': unknown whence: foo (ArgumentError) from -e:1:in `block in <main>' from -e:1:in `open' from -e:1:in `<main>' zsh: exit 1 ./ruby -ve 'open("NEWS") {|f| f.seek(0, :FOO); p f.pos }'
on 2012-11-11 15:15
Issue #6643 has been updated by Glass_saga (Masaki Matsushita). File patch3.diff added :setか:SETの類だけ受け付ければ良いのであれば、小文字のシンボルも大文字のシンボルも変数として持っておいて良いんじゃないかなあと思いました。 (あまりスマートではない気もしますが) # :Setや:Currentも使えた方が良い、という人はいませんよね? なので、そのようにしたpatchをつくりました。 :eNdのようなシンボルまで受け付けてしまう問題、エラーメッセージの正確さの問題はこれで解決します。 また、先のpatchではdowncase!して小文字に合わせていたので、大文字が好みの人にだけメソッド呼び出しのコストを強いていましたが、 両方変数として持っておけばそのような事もありません。 ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-32778 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: 2.0.0 IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-11-11 17:23
Issue #6643 has been updated by knu (Akinori MUSHA). 今さらですが、すべて大文字のシンボルだけサポートすればいいのではないでしょうか。 seekのラッパーとか、IOライクなクラスの実装とかで揺れの許容が期待されるのは重荷になると思います。 こうしたコンベンションを他のメソッドにおける定数にも拡大していくことを考えるとなおさらです。 「Unix/Cの定数マクロをシンボル化する際は、大文字のまま。自明な場合は共通のプレフィックスを除く」というシンプルなルールに沿えば、trapにおけるシグナル名の扱いとも整合しますし、毎度:cur→:currentみたいな略語の展開など余計なことを考えなくて済みます。 ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-32781 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: 2.0.0 IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-11-12 03:39
Issue #6643 has been updated by Glass_saga (Masaki Matsushita). > 「Unix/Cの定数マクロをシンボル化する際は、大文字のまま。自明な場合は共通のプレフィックスを除く」というシンプルなルール IO#adviseはこのルールに沿っていませんね。 例えばPOSIX_FADV_NORMALに対応するRubyのシンボルは:normalです。 一方BasicSocket#setsockoptはこのルールに従っていて、例えばSO_REUSEADDRに対応するシンボルは:REUSEADDRです。 ルールを決めて統一してしまった方が良いのかも知れません。 ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-32797 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: 2.0.0 IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2012-11-24 02:44
Issue #6643 has been updated by mame (Yusuke Endoh). Target version changed from 2.0.0 to next minor ---------------------------------------- Feature #6643: io.seek(off, :end) https://bugs.ruby-lang.org/issues/6643#change-33713 Author: akr (Akira Tanaka) Status: Assigned Priority: Normal Assignee: akr (Akira Tanaka) Category: Target version: next minor IO#seek メソッドの whence 引数としてシンボルを受け付けるようにしませんか。 つまり、 io.seek(0, IO::SEEK_END) のかわりに io.seek(0, :end) とかけるようにする、ということです。 IO::SEEK_END と等価な指定として :end, IO::SEEK_CUR と等価な指定として :cur, IO::SEEK_SET と等価な指定として :set を 受け付けるようにします。 思い立ったきっかけとしては、 ひさしぶりに seek を使ったら、 io.seek(IO::SEEK_END) と書いてしまって、これは私の環境では IO::SEEK_END が 2 なので、 io.seek(2) つまり io.seek(2, IO::SEEK_SET) と解釈されてしまって、ちょっと悩んだためです。 もし同様な間違いをしてしまっても、IO::SEEK_END でなく :end と 書いたのであれば、 io.seek(:end) は can't convert Symbol into Integer (TypeError) となるので悩まなくて済んだのに、 と思いました。 なお、その間違いをしたのは私だけではないようで、検索すると http://jira.codehaus.org/browse/JRUBY-1897 http://rubyforge.org/pipermail/biocatalogue-develo... というふたつの例が見つかります。 どうでしょうか。
on 2013-04-03 19:33
2012$BG/(B11$B7n(B24$BF|(B 10:35 mame (Yusuke Endoh) <mame@tsg.ne.jp>: > Feature #6643: io.seek(off, :end) > https://bugs.ruby-lang.org/issues/6643#change-33713 > IO#seek $B%a%=%C%I$N(B whence $B0z?t$H$7$F%7%s%\%k$r<u$1IU$1$k$h$&$K$7$^$;$s$+!#(B $B5DO@$rFI$_D>$7$?$N$G$9$,!"7k6I!"$3$l$+$i0U8+$,$^$H$^$k$-$O$7$J$$$N$G!"(B $B:G>.8B$N$b$N$rF~$l$h$&$H$$$&$3$H$G!"(BC $B%W%m%0%i%^$K$o$+$j$d$9$$$H$$$&M}M3$G!"(B C $B$HF1$8BgJ8;z$G(B :CUR, :END, :SET $B$@$1<u$1IU$1$k$H$7$FF~$l$^$7$?!#(B
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.