内容へ移動
TechNote
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
start
»
ruby
»
tips
ruby:tips
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== Ruby - Tips ====== ===== パス操作 ===== ==== ファイルパスからファイル名を取得する ==== <sxh ruby> File.basename("/path/to/script/name.rb") #=> "name.rb" </sxh> ==== ファイルパスから拡張子を除いたファイル名を取得する ==== <sxh ruby> File.basename("/path/to/script/name.rb",".rb") #=> "name" </sxh> ==== ファイルパスから拡張子を取得する ==== <sxh ruby> File.extname("/path/to/script/name.rb") #=> ".rb" </sxh> ==== ファイルパスからディレクトリパスを取得する ==== <sxh ruby> File::dirname("/path/to/script/name.rb") #=> "/path/to/script" </sxh> ==== ディレクトリパスからディレクトリ名を取得する ==== <sxh ruby> File::basename("/path/to/script") #=> "script" </sxh> ===== close/dup ===== dupメソッドはオブジェクトの内容を複製し、cloneメソッドは特異メソッドを含めた完全な複製を作成する。どちらも「浅い」コピーなため、深い階層の場合片方のオブジェクトに対する変更がもう片方に影響する。 <sxh ruby> #!/usr/bin/ruby # coding: utf-8 argv1 = { "Name1" => "Ruby", "Name2" => "Perl", "Versions" => { "Ruby" => 1.93, "Perl" => 5.16, }, } argv2 = argv1.dup argv1["Versions"]["Ruby"] = "2.00" p argv1 # => {"Name1"=>"Ruby", "Name2"=>"Perl", "Versions"=>{"Ruby"=>"2.00", "Perl"=>5.16}} p argv2 # => {"Name1"=>"Ruby", "Name2"=>"Perl", "Versions"=>{"Ruby"=>"2.00", "Perl"=>5.16}} </sxh> 内部の参照も含めた「深い」コピーが必要な場合は、以下のMarshalメソッドを使う。 ===== Marshal ===== <sxh ruby> #!/usr/bin/ruby # coding: utf-8 argv1 = { "Name1" => "Ruby", "Name2" => "Perl", "Versions" => { "Ruby" => 1.93, "Perl" => 5.16, }, } argv2 = Marshal.load(Marshal.dump(argv1)) argv1["Versions"]["Ruby"] = "2.00" p argv1 # => {"Name1"=>"Ruby", "Name2"=>"Perl", "Versions"=>{"Ruby"=>"2.00", "Perl"=>5.16}} p argv2 # => {"Name1"=>"Ruby", "Name2"=>"Perl", "Versions"=>{"Ruby"=>1.93, "Perl"=>5.16}} </sxh>
ruby/tips.txt
· 最終更新: 2018/07/20 14:19 by
taka
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ