From: rubikitch@... Date: 2009-07-07T21:31:01+09:00 Subject: [ruby-list:46179] Re: メソッドの扱いについて From: eiichi_maekawa@mhi.co.jp 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