トップ «前の日記(2007-05-03) 最新 次の日記(2007-05-05)» 編集

Route 477



2007-05-04

[ruby] zipメソッドって何に使うの?

http://d.hatena.ne.jp/seiunsky/20070425/1177522397

複数の配列を同時にイテレートしたいときとか。

例:

a = ["foo", "bar", "baz"]
b = [1,2,3]
ab = a.zip(b)  #=>  [["foo", 1], ["bar", 2], ["baz", 3]]
ab.each do |s, i|
  p [s, i]
end

出力:

["foo", 1]
["bar", 2]
["baz", 3]

例えば、今のRubyにはmap_with_indexがないですが

a = ["foo", "bar", "baz"]
a.zip((0...a.size).to_a).map{|s, i|
 "#{s}:#{i}"
}
#実行結果: ["foo:0", "bar:1", "baz:2"]

のようにzipで代用することができます(ちょっと長いけど…)。

他にも有用な使い道があったら教えてください。

#ちなみに僕もHaskell触るまでzipとかどう使うのか知りませんでした

[Ruby/SDL] SFontについて調べる

  • 1枚の画像をフォントとして使う
  • 半透明が使える(PNGの場合)
  • 文字幅が可変(文字と文字の間に紫の線が入る)

いま試したんだが、紫の線の幅には意味がないらしい。

こういうフォントを作ってみたけど

{  |     }

普通に表示された。

画像の説明

うーん、SFont 2.03のREADMEによれば 紫の線が文字幅に影響するのが正しい仕様のはずだが。

環境はRuby/SDL 1.3.0のWindows版バイナリ配布を使ってます。

[Ruby/SDL] "SFontとか簡単に自動生成できるだろ?"

そう思ってた時期が俺にもありました…。 要するに何も書いてない部分に紫の線を引けばいいんだろ?と思ってたんだが、これだと「"」の間にも線が引かれてしまう。

どうすりゃいいんだ。

デザインによっては「"」がひとつながりになってる場合もあるしなぁ(3Dっぽいやつとか)。 あとステンシルみたいに全部の文字に隙間があるデザインだったりすると壊滅的なことに(笑)。 まぁ最後は人間の手修正に頼るんだろうな。