[#40891] 配列をシャッフル — Hideo Konami <konami@...>

小波です。

25 messages 2005/07/01
[#40899] Re: 配列をシャッフル — ktokita <ktokita-p@...> 2005/07/01

時田です

[ruby-list:40926] Re: windowsでコンテキストメニューの「印刷」を実行するには?

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2005-07-13 11:02:53 UTC
List: ruby-list #40926
山本です。

>情報ありがとうございます。
>ざっと目を通してみました。
>どうも、参照渡しのやり方が悪いんじゃなくて、参照渡しでやっている限り
>InvokeVerbには受けつけてもらえないってことになりそうですねえ。 

そうみたいですね。なぜこの関数だけそうなのか、よくわかりませんが・・・
試しに C++Builder5 で 

  HRESULT _stdcall test([in, optional] VARIANT val );

というメソッドを持つコントロールを作って ruby から呼んでみましたが、
問題なく実行されました。

># どうするか、考えがまとまらない...。

本来は、パラメータが [in] なら値渡し、[out] なら参照渡しするのが
正しいやり方なんだと思います。[in] か [out] か、ruby側(レイトバインディング)で
知る方法がないのが問題だと・・・・

となると、VBScript みたいにユーザに参照渡しと値渡しを区別させるとか
(VBScript では括弧で囲むと値渡し、囲まないと参照渡しになるらしい)
JScript のようにすべて値渡しするとか・・・でもこれだと動かないものが
あったんですよね。動かないというのは、やっぱり [out] に値渡しだと
エラーになるとか、値が得られないとか、そういうことでしょうか?

# http://blogs.msdn.com/ericlippert/archive/2003/09/29/53117.aspx に、
# VBScript で [in,out] に渡すとメモリリークするとか、恐ろしいことが
# 書いてありましたが・・・なんか、結構深そうな話ですね。


In This Thread