2

オブジェクトと参照を処理するルビーの方法について少し知っています。交換品など...

var が fixnum であるため、fixnum では機能しないことはわかっています。しかし、関数内の fixnum の値を変更したいのですが、その値は ouside var で変更されました。

これどうやってするの ?

この「1」のような文字列を使用できると思いますが、それはかなり汚いです。

4

3 に答える 3

5

Ruby は常に参照渡しを行いますが (すべてがオブジェクトであるため)、Fixnum には値を変更できるメソッドがありません。詳細については、「void foo(int &x) -> Ruby? Passing integers by reference?」を参照してください。

次のように、変数に割り当てる値を返すことができます。

a = 5
def do_something(value)
    return 1 #this could be more complicated and depend on the value passed in
end
a = do_something(a)

または、ハッシュなどのオブジェクトで値をラップして、そのように更新することもできます。

a = {:value => 5}
def do_something(dict)
  dict[:value] = 1
end
do_something(a) #now a[:value] is 1 outside the function

お役に立てれば。

于 2012-02-06T21:25:47.653 に答える
4

のような単一の数値[1]またはハッシュのような配列を渡すことができ{value: 1}ます。数値自体は数値のままであるため、文字列よりも見苦しくありませんが、新しいクラスよりもオーバーヘッドが少なくなります...

于 2012-02-08T03:55:05.863 に答える