読者です 読者をやめる 読者になる 読者になる

argius note

プログラミング関連

開発しています



演算子の再定義.....?

演算子オーバーライド。(キケンです!絶対に真似しないでください!) class String def -(s) gsub(s, "") end def /(i) self[0, length / 2] end def **(i) s = self and i.times do s *= i end and s end end s = "squeak" puts s + "y" puts s - "ak" + …

1行ずつ処理する-知らなかったこと

テキストデータを1行ずつ処理する場合。 # Perl while (<>) { print if /end/i; } これを使うとき、こうやって実行していた。 $ cat file.txt | perl grep.pl しかし、これで動くことを今日知った。 $ perl grep.pl file.txt それと言うのも、Rubyでは # rub…

環境変数PATHやCLASSPATHの値をチェックする

sardineさんの日記(id:sardine:20060331)で、「パスのリスト」が含まれる任意の環境変数の値をチェックするツールをD言語で書いてらっしゃいます。 私はこれをPerlとRubyで書いてみました。ちょうどRubyのファイル関連を調べていたので、良いお題かと思い…

キレイなコード

私的キレイなコードの定義。 かわいい記号 . + - * = / [ ] ? ! : | ふつうな記号 , " # @ ` ( ) % びみょうな記号 ' ~ ^ $ ` & かわいくない記号 ; { } _ ¥ だから、 ['abc', 'def', 'ghi'].each{ |o| puts o.to_s.reverse } はキレイじゃないので、 class…

Ruby@ぱるま

20060401-Legwork - Perlish Magazine(ドメイン名に注目) (経路:) どっちなんだw。

ファイル関連のクラス&モジュール

ファイルを扱うクラスやモジュールには、FileとかFileTestとかFile::StatとかPathnameがある。FileTestはモジュール。Pathnameは添付ライブラリのクラス。Pathname以外は組み込み。以下のように、同じような操作を持っている。 File.directory?(s) FileTest.…

ブロック引数のスコープ

現行の言語仕様の中で、最もよろしくないものと各地で言われているもので、ブロック外のスコープの変数がブロック内で書き換えられてしまうというもの。 i = 'a' (1..9).each do |i| print i end p i #=> 9

暗黙の文字列変換

暗黙に文字列への変換をさせるには、to_strメソッドを定義する。 class Name def initialize name @name = name end def to_str return "name is " + @name end end o = Name.new "A.T" p o p "My " + o puts o puts "My " + o 実行するとこうなる。 # "My n…

keyword 'proc' will be obsolete

前回(id:argius:20060321:1142967272)でProcオブジェクトを'proc'キーワードで作っていましたが、るびまを読んでいたら、まつもとさんが「将来なくなる」と仰ってました。というわけで、また書き直し。 p = Proc.new do |o| print "/*", o, "*/" end [1, 3…

るびま(Rubyist Magazine)

http://jp.rubyist.net/magazine/ Rubyの技術情報は初心者向けから上級者向けまで、そのほかインタビューとかRubyを取り巻く背景に関する情報などが掲載されています。これによって、Rubyの言語仕様以外の情報をそれなりに知ることができます。オンライン文…

メッセージング?

Javaから入門した人には難しいんじゃないかと思われる概念。私もちゃんとわかってる訳じゃないですが。 Rubyの場合、メソッドコールはメッセージの送出であり、そのメソッドが実装されているかどうかに関わらず、オブジェクトに通知されます。ただ、オブジェ…

iterate with Proc

ブロックに関連する処理で連鎖。 Procは組込みクラス。ブロック内の手続きをオブジェクトとして扱う、というより、手続きさえオブジェクトである、といったほうがたぶん正しい。あまり現代ぽくない言い方すると「名前無しサブルーチン」オブジェクトとでも。…

固定長テキストを項目でソートする (2)

http://d.hatena.ne.jp/argius/20060302/1141309017 前回、どこかRubyらしくないよなー、と思っていたが、なるほど、ブロックの書き方でした。記号を排して書きたいのだから、ブロックはdo-endで書いたほうが良いね。 # 固定長テキスト→配列 rows = [] while…

Logger

重要度の名前が良い。log4jと同じだからだろうけど。 require 'logger' log = Logger.new(STDOUT) log.level = Logger::INFO if log.debug? log.debug("DEBUG!") end if log.info? log.info("INFO!") end Rubyはpredicateメソッド(述語?)がかわいい。なん…

固定長テキストを項目でソートする

http://d.hatena.ne.jp/argius/20060120/1137783185 RubyはPerlにできることなら絶対できるはず。とりあえず練習に、先日書いたCVSの出力を編集するPerlスクリプトをRubyで書き直してみた。(shebangは省略) # 固定長テキスト→配列 rows = [] while (line =…

どんどん使う予定

さあ思い出そう、と思って、昔自分が書いたサンプルを見てみたら、セミコロンが付いてますが。毛が生えてるみたいで何かいやだ。*1 http://argius.net/sympathy/compare_11.html *1:中カッコとセミコロンがないのがつるつるした感じです。

BasicObject

http://www.rubyist.net/~matz/tb.rb/20060228 Basicというキーワードが使われていることへのオマージュ。他に意味は無い。

RDE vs RDT

Rubyは、今最も美しく記述できる言語だと思う。Perlはある意味の美しさは持っているが、意味がわかってこそであって、Rubyはコードの意味が分からなくても美しく見えるところが違う*1。Rubyのコードは、簡潔で流麗だ。 しかしながら、IDEが無いとダメな身体…