Feature #3901

WIN32OLE_VARIANT.new method lacks consistency

Added by Akio Tajima over 3 years ago. Updated over 1 year ago.

[ruby-dev:42335]
Status:Assigned
Priority:Low
Assignee:Masaki Suketa
Category:ext
Target version:next minor

Description

=begin
WIN32OLE_VARIANT.newの引数が配列かどうかで変換可否が変わります。
一貫性が無いので気になりました。

詳細:
WIN32OLEVARIANT.new(Kernel)はTypeError: can not convert WIN32OLEVARIANT from type Moduleとなります。
WIN32OLE_VARIANT.new([Kernel])は、KernelにIDispatchをラップしたWIN32OLEオブジェクトを生成します。

あるべき姿:
配列を指定した場合と同様、Rubyのオブジェクトでスカラ型に変換できないものはIDispatchのラッパーにするのが良いと思います。
ただし元々WIN32OLE_VARIANTが必要な事例が少ないので、修正する必要性については不明です。
=end

History

#1 Updated by Masaki Suketa over 3 years ago

=begin
助田です。

On Sun, Oct 03, 2010 at 09:44:38PM +0900, Akio Tajima wrote:

WIN32OLEVARIANT.new(Kernel)はTypeError: can not convert WIN32OLEVARIANT from type Moduleとなります。
WIN32OLE_VARIANT.new([Kernel])は、KernelにIDispatchをラップしたWIN32OLEオブジェクトを生成します。

あるべき姿:
配列を指定した場合と同様、Rubyのオブジェクトでスカラ型に変換できないものはIDispatchのラッパーにするのが良いと思います。

報告ありがとうございます。
統一することには同意です。
で、IDispatch のラッパーにした方が良い理由が何かありますか?
どちらかというと TypeError が、元々、私が意図した動作だったような気
がしています。

助田 雅紀

=end

#2 Updated by Akio Tajima over 3 years ago

=begin

artonです。

で、IDispatch
のラッパーにした方が良い理由が何かありますか?
どちらかというと TypeError
が、元々、私が意図した動作だったような気
がしています。
意図はそうだと思いますが、IDispatchを与える(作る)方法と
してWIN32OLE_VARIANTはちょうど良い位置にあるからです。
もっとも、ユースケースは思いつかないのでどちらもTypeError
でも異論はないです。


Learn more about breast cancer - Pink Ribbon Campaign 2010
http://yj.pn/JAy9L7

=end

#3 Updated by Hiroshi Nakamura about 2 years ago

  • Description updated (diff)
  • Category set to ext
  • Assignee set to Masaki Suketa

#4 Updated by Shyouhei Urabe about 2 years ago

  • Status changed from Open to Assigned

#5 Updated by Yusuke Endoh over 1 year ago

  • Target version set to next minor

Also available in: Atom PDF