4
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

yokohama.rb 7/12

ファイルの削除

File と FileUtils でできるけど、いろいろ違う。

File FileUtils
メソッド名 unlink rm
メソッド名の由来 symbolic link を削除する ReMove
複数指定するとき 引数に並べる 配列を渡す
複数指定の例 File.unlink( "a", "b", "c" ) FileUtils.rm( %w( a b c ))
オプション指定 なし :force=>true とか
返戻値 削除したファイルの数 削除したファイルのファイル名の配列

それと、失敗した時の挙動。

失敗した動作はちょっと不穏なんだけど、File.unlinkFileUtils.rm は同じ。
先頭から順に削除するので、
c というファイルがない場合、
File.unlink( "a", "b", "c", "d" )
を実行すると、 a と b が削除されて、c を削除しようとして失敗、d はそのまま。

Windows で rbenv したい

pik と uru があるらしい。

uru が良さそうな感じ?

Windows の File.sticky?

nil を返してきた。
もちろん Mac や Linux では truefalse を返す。

ちなみに File.sticky? "存在しないファイル" は 例外ではなく false。

OpenSolaris

OpenSolaris は死んだらしい。
屍は OpenIndiana が拾って、zfs を使いたい人が使うらしい。

文字列の連接

C言語由来( BCPL由来? )と思われる文字列の連接が、ruby にもある。
ということを、yokohama.rb で知った。

文字列の連接とは、

char const * hoge = "H" "O" /*コメント書いたり*/ "G" "E";
wchar_t const * fuga = L"HO" /* L を両方につける */ L"GE";

こういうもので、文字列リテラルを並べると、コンパイル時にひとまとまりになるというもの。

ruby では以下のとおり:

"a" "b".size #=> 2
"a" "b"*3 #=> "ababab"
[1,2,3] * "_" "#" #=> "1_#2_#3"
?a "b" 'c' #=> "abc"
"a" 'b' "c" #=> "abc"
"a" %Q!b! #=> エラー
  • 文字列の連接の結合順位はたぶん最強で、メソッド呼び出しのピリオドよりも強い。
  • 'a'"b" を混ぜても良いが、%Q!c! は連接しない。
  • ?a も、普通に連接される。
  • ヒアドキュメントは、左側にある場合のみ連接される。下記の通り:
p <<HEREDOC  "[concat]" # ヒアドキュメントも連接される!
here document
HEREDOC
#=> "here document\n[concat]" 順序に注意。

p  "[concat]"  <<HOGE # エラー。ヒアドキュメントが右だとだめ。
here document
HOGE

追記 :
文字列の連接についてさらに調べた記事
http://qiita.com/Nabetani/items/29a82811e95f80edbb27
を、書いた。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
4
Help us understand the problem. What are the problem?