Hatena::ブログ(Diary)

temitaの不思議空間

2013-01-06

p {:key => 123} が動かないせいでRubyが少し嫌いになった

17:09 | p {:key => 123} が動かないせいでRubyが少し嫌いになった - temitaの不思議空間 を含むブックマーク

すごい些細なことかもしれないです。

ハッシュを直接outputするとエラーが出る。

[10] pry(main)> p {:key => 123}
SyntaxError: unexpected tASSOC, expecting '}'
p {:key => 123}

代入後だとちゃんと動く。なにが違うんだよ。

[10] pry(main)> p h = {:key => 123}
{:key=>123}
=> nil

ちなみに配列だと問題ない

[11] pry(main)> p [1,2,3,4,5]
[1, 2, 3, 4, 5]
=> nil

ブロックの{}とが同じだから解釈できないって理由だろうけど。
パフォーマンスの問題なのか?
妥協するしかないのかね。

keyesberrykeyesberry 2013/01/06 23:16 p h={}とするかp({})とカッコを付けるんでしょうね。

temitatemita 2013/01/07 12:33 括弧()をつけると大丈夫なんですね!ありがとうございます。

2012-08-16

rroonga でインデックスカラムから転置インデックスを参照しようとしたが出来なかった

| 09:12 | rroonga でインデックスカラムから転置インデックスを参照しようとしたが出来なかった - temitaの不思議空間 を含むブックマーク

2012/08/16 groonga 1.0.0

rroonga でわかち書きされた文章を取りだして、それを集計しようと考えてたけど、転置インデックスが見つからなかったので苦戦。未解決です。
rroongaはgroongaのrubyバインディング転置インデックスで高速に検索できるらしい。転置インデックスから分割された文章が参照できるはずと予想。

groongaにデータを登録してからインデックスが更新されるまでの流れ - ククログ(2011-10-05)を参考にインデックスカラムに転置インデックスの場所を探す。

転置インデックスを見つけて一番目の中身を返してみる。

~~
irb(main):116:0> terms = Groonga["Terms"]
=> #<Groonga::PatriciaTrie id: <276>, name: <Terms>, path: </tmp/tmpdb/test3.db.0000114>, domain: <ShortText>, range: (nil), flags: <KEY_NORMALIZE|WITH_SECTION>, encoding: <:utf8>, size: <198048>>
irb(main):117:0> terms.columns
=> [#<Groonga::IndexColumn id: <277>, name: <Terms.Comments_comment>, path: </tmp/tmpdb/test3.db.0000115>, domain: <Terms>, range: <Comments>, flags: <>>]
irb(main):118:0> terms.columns[0][1]
=> 472

期待した動作では、転置インデックス配列が返ってくると思ってたけど、なにかのIDひとつが返ってきた。

インデックスカラムのデータ構造がさっぱり分からない。。