From: MASAKI Yuhsuke Date: 2015-02-03T16:24:20+09:00 Subject: [ruby-list:50075] Re: def文だけでは邪道でしょうか? こんにちは、正木です。 お話が正確に理解できませんが、ファイルにメソッド定義だけを記述し、 それをロードすることを指しているのでしょうか? ソースコードがないためどのような内容か推測するのも困難ですが、 非常にVBっぽいコードだなぁ、という印象は受けました。 複数のファイルに分割する必然性はあるのでしょうか? 特に分割する必要がないのであれば、例えば class Analysis def item_dsp(mat) ... mat end def similar_coeff(mat) ... mat end ... def initialize puts "csvファイル名を入力してください" end end Analysis.new というのがRuby的かなぁ、とは思います。 You wrote: > 初めまして。秋山 好一と申します、よろしくお願いします。 > ruby初心者です。たのしいrubyのはずが、全般的な理解はほとんど出来ていません。 > 配列クラスに関心をもち、エクセルvbaでの経験から、ファジィ数値データ処理 > をやり始めました。 > 配列の部分を集中的に学習しました。これが功を奏したのか、たのしいrubyに変 > 化しつつありますが、この先は自信がありません? > > 質問事項は、def文の連続というパターンは、rubyでは何か不自然/ > 邪道なのでしょうか?ということです。 > その他、雑誌等に投稿するときは、ユーザインターフェイス(例えば'Tk'などを > 使用して)作成する必要があるのでしょうか? > > 類似関係(ファジィ同値関係)分析の一例を以下に示しておきます。使用した > rubyのバージョンは2.0です > window7とUbuntuで、動作を確認しています。 > > ①csv形式で、分析データを作成しておきます。 > ②def文で、データを読み取ります。 > ③def文で、類似度係数行列を作成します。 > ④def文で、推移性行列を作成します。 > ⑤def文で、類似関係(ファジィ同値関係)を表示します。 > > 上記プログラムの概要と実行結果は以下の通りです。 > 項目A,B,C,Dで、(A-C) ,(B-D)がクラスターを形成する例です。 > > # encoding: utf-8 > require "csv" > require "./read-csv.rb" > require "./item-disp.rb" > require "./data-disp.rb" > require "./similar-coeff.rb" > require "./max-trans.rb" > require "./cluster-pat.rb" > #-----------main--------------------------- > puts "csvファイル名を入力してください" > sd = STDIN.gets.chomp mat = read_csv(sd) > puts "読み取ったデータ" > mat = item_disp(mat) mat = data_disp(mat) > puts "類似度係数行列" > mat = item_disp(mat) > mat = similar_coeff(mat) > puts "最大法推移性行列" > mat = item_disp(mat) > mat = max_trans(mat) > puts "パターン識別行列" > mat = cluster_pat(mat) > > > A,B,C,Dのクイズに対して、1は正答、0は誤答と考えてください > 実行結果はつぎの通りです。 > 読み取ったデータ > [A] [B] [C] [D] > 1.00 1.00 1.00 0.00 > 0.00 1.00 0.00 0.00 > 1.00 1.00 1.00 1.00 > 1.00 1.00 0.00 1.00 > 0.00 1.00 0.00 1.00 > 1.00 0.00 1.00 0.00 > 1.00 1.00 1.00 0.00 > 1.00 0.00 1.00 0.00 > 1.00 1.00 0.00 0.00 > 1.00 0.00 1.00 0.00 > > 類似度係数行列 > [A] [B] [C] [D] > 1.00 0.50 0.80 0.30 > 0.50 1.00 0.30 0.60 > 0.80 0.30 1.00 0.30 > 0.30 0.60 0.30 1.00 > > 最大法推移性行列 > [A] [B] [C] [D] > 1.00 0.50 0.80 0.50 > 0.50 1.00 0.50 0.60 > 0.80 0.50 1.00 0.50 > 0.50 0.60 0.50 1.00 > > パターン識別行列 > 1回目 識別レベル 1.00 > [A] [B] [C] [D] > 1 0 0 0 > 0 1 0 0 > 0 0 1 0 > 0 0 0 1 > 2回目 識別レベル 0.80 > [A] [B] [C] [D] > 1 0 1 0 > 0 1 0 0 > 1 0 1 0 > 0 0 0 1 > ["A", "C"] > 3回目 識別レベル 0.60 > [A] [B] [C] [D] > 1 0 1 0 > 0 1 0 1 > 1 0 1 0 > 0 1 0 1 > ["A", "C"] > ["B", "D"] > 4回目 識別レベル 0.50 > [A] [B] [C] [D] > 1 1 1 1 > 1 1 1 1 > 1 1 1 1 > 1 1 1 1 > ["A", "B", "C", "D"] ****************************** * The Rider, Hacker and Musician. * +++ ENABLE YOUR HEART +++ ****************************** * MASAKI Yuhsuke. * aki@reasonset.net * Website: http://reasonset.net/ * GitHub : https://github.com/reasonset/ * Twitter: @reasonset ******************************