«前の日記(平成22年09月21日) 最新 次の日記(平成22年09月29日)» 編集

お知らせ


平成22年09月27日 [長年日記]

[Ruby]String#<<

 この前日記変換スクリプトを書いたときに1バイトスペースがあったら切れるってことで、Array#to_sだとスペースが入らないので、位置を指定してからそれ以降の要素を間にスペース入れて連結するメソッドでも作ろうかと思い、

class Array
  def to_s_space(n)
    self[n..-1].inject{|s,x| s<<' '+x}
  end
end

って書いて試したら

a=["eekane","ikankane","damekane","suimasen"]
2.times do
  puts a.to_s_space(1)
end
# >> ikankane damekane suimasen
# >> ikankane damekane suimasen damekane suimasen

と、2回目で指定した位置以降の文字列が繰り返されるという現象が発生したので、調べてみたら、1回実行した時点でa[1]が["ikankane","damekane","suimasen"]に書き換わっていることが判明。なので最初のメソッドを

class Array
  def to_s_space(n)
    self[n..-1].inject{|s,x| s+=' '+x}
  end
end

と演算子<<を代入に変えたら配列が書き換えられることもなくなり無事解決。で、考えてみたらが破壊的メソッドのString#<<が配列の要素に直接影響を及ぼしてたのかな、と推測。何故後者だと大丈夫なのかがいまいち謎だけど、まあ、その辺がまだよく分かってないって事でRubyはむつかしいかね、ってことで一つ。

 あ、ちなみに、ここのオチは

class Array
  def to_s_space(n)
    self[n..-1].join(' ')
  end
end

などとArray#joinという間に指定した文字列を挿入しつつ連結するというメソッドがあったってことですの。

あとは簡易徒然日記

 シェリルとランカのクリスマスアルバム「cosmic cunne」はこの週末にアニメイトで予約カードを見つけたのでさっくり予約してきました。

 妖精大戦争は、イージーを全ルートノーコンティニュークリアしてエクストラ解放。ルートの中ではBが難しかった気がする。で、エクストラ試しにやってみたけど敵弾が速すぎて良く分かんないうちに玉砕。ちなみに、今回の敵弾凍らせるやつは、面積を稼ぐという行為と、攻撃が短時間のカタルシスってところがクイックスとファンタジーゾーンをなんとなく彷彿とさせられます。

 クラブニンテンドーのポイントが9月末で切れるのでさっくり期限切れになる分を交換。あとは、今年度に入って登録してなかったので、プラチナ会員になる分だけ登録作業をぺちぺちと。やっぱし早期購入ポイントがないと辛いなということで、10月からは買ったらさっさとこまめに登録しておこう…。

 あとはDSiのRボタンがいよいよ効かなくなってきたので、任天堂のオンライン修理受付を申込。発送キットも申し込んだので届いたら梱包してDSiを送ろう。ちなみに、ボタン修理の参考価格は2000円みたい。

 Tokyo Boogie Nightは10月からまた南海放送では時間帯移動とのこと。今度は土曜の22時半で、時間は30分ずれたものの曜日は半年で戻ったことに。月曜よりは土曜の方が聴きやすくてええかね、やっぱり。あと、土曜22時のときは密かに南海放送がTBNを最初に放送する局だったりしたこともあったけど、さっき調べた感じでは今回の移動でまた返り咲きっぽい?ちなみに移動の関係で一週お休みするとのことで。