Project

General

Profile

Actions

Bug #946

closed

Array#pack の f が入力として文字列を許容する

Added by tadf (tadayoshi funaba) over 15 years ago. Updated almost 13 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
Backport:

Description

=begin
main@191-20081229> ['1'].pack('f')
#=> "\x00\x00\x80?"

main@191-20081229> ['1'].pack('i')
TypeError: can't convert String into Integer

i ではエラーになるし、f で許す必要はないと思います。
=end

Actions #1

Updated by tadf (tadayoshi funaba) over 15 years ago

=begin
修正が入っていますが、現状ではむしろ nil などが通ってしまいますね。

main@191-20081230> [nil].pack('f')
#=> "\x00\x00\x00\x00"

あと、f 以外にも deEgG などにも同じ課題があると思います。

=end

Actions #2

Updated by matz (Yukihiro Matsumoto) over 15 years ago

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:37663] [Bug #946] Array#pack の f が入力として文字列を許容する"
on Tue, 30 Dec 2008 22:45:13 +0900, tadayoshi funaba writes:

|修正が入っていますが、現状ではむしろ nil などが通ってしまいますね。

うっかりしてました。

|main@191-20081230> [nil].pack('f')
|#=> "\x00\x00\x00\x00"
|
|あと、f 以外にも deEgG などにも同じ課題があると思います。

直しました。

=end

Actions #3

Updated by tadf (tadayoshi funaba) over 15 years ago

=begin
現状で f などでは文字列を浮動小数点数に変換するようで変化が判らな
いのですが、これは、i などの整数のあつかいと異なりますよね。i は変
換しません。

更に、'' のようなもの通るので、1.8 よりももっと緩くなっています。
これはこれでいいのでしょうか。

main@187-20080811> [''].pack('f')
ArgumentError: invalid value for Float(): ""

main@191-20081231> [''].pack('f')
#=> "\x00\x00\x00\x00"

=end

Actions #4

Updated by matz (Yukihiro Matsumoto) over 15 years ago

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:37668] [Bug #946] Array#pack の f が入力として文字列を許容する"
on Wed, 31 Dec 2008 01:37:39 +0900, tadayoshi funaba writes:

|現状で f などでは文字列を浮動小数点数に変換するようで変化が判らな
|いのですが、これは、i などの整数のあつかいと異なりますよね。i は変
|換しません。
|
|更に、'' のようなもの通るので、1.8 よりももっと緩くなっています。
|これはこれでいいのでしょうか。

すいません、場当たりな対応ばかりで。

もともとFloatに、Integerにおけるto_iとto_intのような2種類の
変換メソッドがなく、to_fしかないところが根源的な問題のような
気がしますが、とりあえずはMathモジュールが使っている、

Floatでないとき、Numericのサブクラスならばto_fで変換

という戦略を採用することにします。delegatorで動作しないのは厳
しいですが、だからといってto_floのようなメソッドを新たに導入
するかどうかはちょっと躊躇するところです。

=end

Actions #5

Updated by yugui (Yuki Sonoda) over 15 years ago

  • Target version set to 1.9.2

=begin

=end

Actions #6

Updated by yugui (Yuki Sonoda) over 15 years ago

  • Target version changed from 1.9.2 to 1.9.1 RC2

=begin

=end

Actions #7

Updated by yugui (Yuki Sonoda) over 15 years ago

  • Target version changed from 1.9.1 RC2 to 1.9.2

=begin

=end

Actions #8

Updated by matz (Yukihiro Matsumoto) about 15 years ago

  • Status changed from Open to Closed

=begin

=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0