rubyの最近のブログ記事
<<識別子' を含む行の次の行から `識別子' だけの行の直前までを文字列とする。
ヒアドキュメントでは、開始ラベル `<<識別子' が文法要素としての式にあたります。これは、開始ラベルを使ってヒアドキュメント全体を引数に渡したりレシーバにしたりすることができるということを意味します。
開始ラベルを `<<-識別子' のように `-' を付けて書くことで終端行をインデントすることができます。
一行に複数のヒアドキュメントを書くこともできます。
開始ラベル `<<識別子' の `識別子' を(""、''、``)のいずれかで囲むことで、ヒアドキュメントとなる文字列リテラルの性質は対応する文字列リテラルと同じ扱いになります。
カテゴリー:
・ActiveTclをインストール
・環境変数 RUBY_TCL_DLL, RUBY_TK_DLL を tcl84.dll, tk84.dll のあるパス に設定する
・テスト実行時に--runnner=tkオプションを付ける
カテゴリー:
Stringは変更されるたびに新しいインスタンスが作られるから、freezeしても無意味?
整数の場合は、freezeできない?
arr = [1, 2, 3]
puts arr.frozen? # → false
arr << 4
p arr
arr.freeze
puts arr.frozen? # → true
#arr << 5 # TypeErrorになる
a = String.new("test")
puts a
puts a.object_id
a.freeze
puts a.frozen?
a = "testtest"
puts a
puts a.object_id
n = 0
puts n
puts n.object_id
n.freeze
puts n.frozen?
n = 1
puts n
puts n.object_id
カテゴリー:
def one(arg)
if block_given?
"block given to 'one' returns #{yield}"
else
arg
end
end
def two
if block_given?
"block given to 'two' returns #{yield}"
else
"no block given to 'two'"
end
end
# ブロックはtwoに関連付けられる
result1 = one two {
"three"
}
# ブロックはoneに関連付けられる
result2 = one two do
"three"
end
result3 = one two
puts "With braces, result = #{result1}"
puts "With do/end, result = #{result2}"
puts "With no block, result = #{result3}"
出力結果:
With braces, result = block given to 'two' returns three
With do/end, result = block given to 'one' returns three
With no block, result = no block given to 'two'
カテゴリー:
Radrails で関数名の補完ができるなんて : 僕は発展途上技術者


最近のコメント