[#48349] Ruby/GTK2 archlinux x64 エラー — ashbb <ashbbb@...>
こんにちは。ashbbです。
11 messages
2011/09/10
[#48350] Re: Ruby/GTK2 archlinux x64 エラー
— Kouhei Sutou <kou@...>
2011/09/10
須藤です。
[#48351] Re: Ruby/GTK2 archlinux x64 エラー
— ashbb <ashbbb@...>
2011/09/10
ありがとうございます!
[#48352] Re: Ruby/GTK2 archlinux x64 エラー
— ashbb <ashbbb@...>
2011/09/10
須藤さん
[#48353] Re: Ruby/GTK2 archlinux x64 エラー
— Kouhei Sutou <kou@...>
2011/09/11
須藤です。
[#48371] [ANN] Ruby-GNOME2 1.0.1 — Kouhei Sutou <kou@...>
須藤です。
6 messages
2011/09/18
[#48379] splitの正規表現を改善したい — masayoshi takahashi <maki@...>
高橋征義です。こんにちは。
6 messages
2011/09/21
[#48382] Ruby/Gstreamer for Windows — ashbb <ashbbb@...>
こんにちは。
17 messages
2011/09/22
[#48383] Re: Ruby/Gstreamer for Windows
— Kouhei Sutou <kou@...>
2011/09/23
須藤です。
[#48385] Re: Ruby/Gstreamer for Windows
— ashbb <ashbbb@...>
2011/09/23
須藤さん
[#48386] Re: Ruby/Gstreamer for Windows
— Kouhei Sutou <kou@...>
2011/09/23
須藤です。
[#48388] Re: Ruby/Gstreamer for Windows
— ashbb <ashbbb@...>
2011/09/23
> どうやってビルドしました?
[#48406] Re: Ruby/Gstreamer for Windows
— Kouhei Sutou <kou@...>
2011/09/25
須藤です。
[#48413] Re: Ruby/Gstreamer for Windows
— ashbb <ashbbb@...>
2011/09/25
Wow!
[#48415] Re: Ruby/Gstreamer for Windows
— Kouhei Sutou <kou@...>
2011/09/25
須藤です。
[#48440] Re: Ruby/Gstreamer for Windows
— ashbb <ashbbb@...>
2011/10/04
その後です。。。
[#48441] Re: Ruby/Gstreamer for Windows
— Kouhei Sutou <kou@...>
2011/10/06
須藤です。
[#48442] Re: Ruby/Gstreamer for Windows
— ashbb <ashbbb@...>
2011/10/07
>
[#48464] Re: Ruby/Gstreamer for Windows
— Kouhei Sutou <kou@...>
2011/10/12
須藤です。
[#48392] 要素のない配列の挙動? — 俊(とし) <toshio.otaguro@...>
前略
21 messages
2011/09/24
[#48393] Re: 要素のない配列の挙動?
— TADA Tadashi <t@...>
2011/09/24
ただただしです。
[#48394] Re: 要素のない配列の挙動?
— 俊(とし) <toshio.otaguro@...>
2011/09/24
ただただし さん
[#48399] Re: 要素のない配列の挙動?
— nonta@...
2011/09/24
野田と申します。
[#48400] Re: 要素のない配列の挙動?
— 俊(とし) <toshio.otaguro@...>
2011/09/24
皆さま
[#48401] Re: 要素のない配列の挙動?
— dezawa <dezawa@...>
2011/09/25
私も何度もはまるんですが、これ
[#48396] Ruby 1.9 で Shift JIS の YAML — "5.5" <5.5@...>
5.5 です。
6 messages
2011/09/24
[ruby-list:48405] Re: 要素のない配列の挙動?
From:
俊(とし) <toshio.otaguro@...>
Date:
2011-09-25 04:21:09 UTC
List:
ruby-list #48405
sora_h さんとだんさんの説明が非常にわかりやすかったと思います.
私が先にブロック内のローカル変数云々で言いたかったのも,同様のことだったのですが,
うまく表現できていませんでした.知らず知らずのうちに,参照する先を新しく生成した
オブジェクトに切り替えてしまい,元のオブジェクトを参照しなくなった,と言うべきでした.
たしかにブロックは本質的ではありません.
また,破壊的メソッドと非破壊的メソッドの違いは,これまでもよく理解していたつもりですが,
うっかりするとよく間違えます.私自身はcollect と collect! をよく使います.
だんさんの実例は,昔よくはまった例で,これが最も問題の本質を表しているように
思います.昔々 C 言語で初めてポインタを習った時のことを思い出しました.
ありがとうございました.
ついでに質問ですが,Array#dup と Array$clone も,単にポインタのコピーにすぎませんよね?
オブジェクトまでコピーしようという時に私がよく使うのは,r[0..-1] というオブジェクト生成法です.
もっとスマートな方法はありませんか?
r = [1, 2, 3]
x = r
y = r[0..-1]
x = [3, 4, 5]
r = [5, 6, 7]
p r #=> [5, 6, 7]
p x #=> [3, 4, 5]
p y #=> [1, 2, 3]
--
俊(とし)
2011年9月25日10:34 Shota Fukumori (sora_h) <sorah@tubusu.net>:
> sora_hです.
>
> On 9/25/11 9:21 AM, dezawa wrote:
>> r.each do |x|
>> if x.empty?
>> x = [""] # <== ここで、
>>
>> end
>> }
>>
>> x(すなわち r の要素)に 新しい object [""] が作られて代入されたのです
>
> その言い方だと誤解が含まれるので補足します.
>
> r.each do |x| ... end で変数 x には r の要素が入っています.
> しかし,x は要素が入っているだけで変数であるので,x = [""] を実行すると
> 入っている r の要素から新しく [""] が x に代入されました.なので,変数 x
> にあった r の要素への参照から,新しく作られた [""] への参照に変更された
> ということです.
>
> 配列を別の中身に入れ替えるためには,Array#replace を用いて
>
> r.each do |x|
> if x.empty?
> x.replace([""])
> end
> end
>
> とすることも可能です.
>
> また,すでに言及されていますが Array#map (実態は Enumerable モジュールか
> らインクルードされているため Enumerable#map になりますが), Array#map!
> (Array#map の破壊的メソッド[1]) を用いることで実現することも可能です.
>
> p r.map {|x| if x.empty?; [""]; else; x; end } #=> [[""],[""]]
> p r #=> [[],[]]
>
> # Array#map! (破壊的メソッド) を利用する
> p r.map! {|x| if x.empty?; [""]; else; x; end } #=> [[""],[""]]
> p r #=> [[""],[""]]
>
> [1] 破壊的メソッドというのは,参照を変更せずその参照しているオブジェクト
> そのものを変更することです.
>
> --
> Shota Fukumori a.k.a. sora_h - http://sorah.jp/