File.statに、nameというメソッドを追加したいです。
st=File.stat('hoge.txt')
puts st.name #=> hoge.txt
上記のように使いたいのです。
そこで、以下の様に書いてみました。(行頭のスペースは全角です)
class File
class << self
def stat(file)
st=File::Stat.new(file)
class << st
def name
@file
end
end
st
end
end
end
st=File.stat('./hoge.txt')
puts st.name #=> nil
上記実行結果はnilが出力され、期待した結果は得られませんでした。
上記の様に書いた理由を以下に記します。
クラスメソッドstatは、file.rbのclass Fileの中に定義されていて、
stat.rbのFile::Stat.new(file)を戻り値としていました。
stat.rbのclass File::Statのinitializeでは、
def initialize(file)
@file = file
(略)
end
となっていたので、上記の様に書いてみたのですが、何が悪いのでしょうか?
ご指導のほど、宜しくお願いいたします。
No.1ベストアンサー
- 回答日時:
file.rbとかstat.rbとか、何のことかわからなかったですが、どうやらおそらく、rubygemsのwin32-file-statの話ですね。
require "win32/file"
class File::Stat
def name
@file
end
end
でいいと思います。やってみましたが、ファイル名はUTF-16で格納されていますね。
notnotさん、ご回答ありがとうございました。
>file.rbとかstat.rbとか、何のことかわからなかったですが、どうやらおそらく、rubygemsのwin32-file-statの話ですね。
『stat』をrubyのディレクトリ配下で検索して出てきたファイルでして、
今一度確認しましたら、rubygemsのwin32-file-statでした。
File.statは、require "win32/file"すれば、stat.rbのFile::Statになるって事なんですよね。
また、質問になっちゃうのですが、require "win32/file"してない状態のFile.stat(つまりは組み込みのFile.stat)を改造するのって、どうしたら良いのですか? ご存知でしたら教えてください。お願いいたします。
No.2
- 回答日時:
>つまりは組み込みのFile.stat)を改造するのって、どうしたら良いのですか?
あまり綺麗には行きませんね。とりあえず下記で出来ます。
class File::Stat
attr_accessor :name
end
class << File
alias orig_stat stat
def stat(f)
w=orig_stat(f)
w.name=f
w
end
end
notnotさん、ご回答ありがとうございました。
>あまり綺麗には行きませんね
たしかに強引な感じはしますが、
attr_accessorで出来ちゃうんですね!! すばらしい!!
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- UNIX・Linux Linuxの実行結果を修正したいです。 6 2022/11/22 12:57
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PHP ファイルアップロードの上限を増やす 7 2023/06/23 12:50
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pythonのerrorコード
-
ビーリアルのユーザー名を変え...
-
WinSCPで画像のように puttyを...
-
教えてください
-
なんで if __name__ == "__main__"
-
C言語の入力した文字を反転させ...
-
GitHubは初年度以外は有料にな...
-
パイソンエラーについて
-
pythonエラー
-
100万件越えCSVから条件を満た...
-
VBA
-
パイソンのクラスについて
-
1、Rstudioで回帰直線を求める...
-
MacBookAir起動時にRubyソース...
-
(再質問)エクセルのマクロボ...
-
プログラミング講師はまだ需要...
-
英数字を含む文字列(0-9,A-Z)...
-
パイソンのクラスについて
-
【メモリ不足で落ちる(python)】
-
マクロ処理でのループの記述に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonのerrorコード
-
What class are you in? には何...
-
パイソンのクラス
-
No route matches [GET] "/post...
-
クラス名やモジュール名の競合...
-
Rubyについて質問です
-
変数の隠蔽とは?
-
HSTLやSSTL等のI/Oピン
-
クラスの再定義について(C++)
-
Ruby ハッシュ継承クラス、作成...
-
classのdelete
-
redirect先でredirect元の変数...
-
Rubyの質問です
-
PostScript言語で定積分の計算
-
テンプレートの特殊化でコンパ...
-
class roomとclassroom どちら...
-
get() と find() の違いについて
-
「arg」は何の略?
-
エラー「メソッドまたはデータ...
-
教えてください。vb5.0
おすすめ情報