2009年7月 7日

[ruby-list:46179] Re: メソッドの扱いについて

From: eiichi_maekawa@xxxxx
Subject: [ruby-list:46176] メソッドの扱いについて
Date: Tue, 7 Jul 2009 13:37:01 +0900

るびきちです。

> 前川です。
>

> 文字変換関連、どうにか、メソッドを作りこみましたが、
> 作ったメソッドを、外部参照で、使用できるようにしたいのですが。
>
> クラスにした場合、
>
> class MyConversion
> def initialize(data)
> @data = data
> end
>
> def textToHex
> @data.unpack('H*')[0] #成瀬さん ありがとうございました。
> end
>
> def hexToText
> @data.gsub(/../){|c| c.hex.chr} #永井さん ありがとうございました。
> end
> end
>
> 呼ぶ側は、
>
> result = MyConversion.new('船')
> result1 = result.textToHex
>
> あるいは、
>
> result1 = MyConversion.new('船').textToHex
>
> ですが、メソッドとして、外部参照するような
> 使い方(メソッドの延長??) MyConversion.textToHex(データ) に
> は、できないでしょうか。
> たとえば、
>
> convFunc = MyConversion.new #MyConversion を使用するための定義(実態の作成)
> result = convFunc.textToHex('船') または、'船'.convFunc.textToHex
> result1 = convFunc.textToHex('長崎') '長崎'.convFunc.textToHex
>
> というような具合に。

できますよ。

# メソッド名は単語を_で区切るのがRubyのやり方です。

# -*- coding: euc-jp -*-
class MyConversion
def text_to_hex(data)
data.unpack('H*')[0]
end

def hex_to_text(data)
data.gsub(/../){|c| c.hex.chr}
end
end
MyConversion.new.text_to_hex('船') # => "c1a5"

# クラスメソッドを定義するのはこうする
class MyConversion
def self.text_to_hex(data)
data.unpack('H*')[0]
end

def self.hex_to_text(data)
data.gsub(/../){|c| c.hex.chr}
end
end
MyConversion.text_to_hex('船') # => "c1a5"

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/
Twit: http://twitter.com/rubikitch/
『Ruby逆引きハンドブック』 http://d.hatena.ne.jp/rubikitch/20090525/rubybook


投稿者 xml-rpc : 2009年7月 7日 21:31
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/86513
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。