Rubyの「__END__」がすごく便利
Ruby技術者認定試験公式ガイド輪読会の中で@niku_nameさんに教えてもらって、凄く便利に活用しているので、メモ。Rubyistの皆さんには当然のことなんでしょうけど、僕にとっては新発見でした。
Rubyには「__END__」という、スクリプトの終わりを定義する文字列があります。「__END__」のみで構成された行(前後に空白が入ると認識されません)があると、そこでスクリプトが終わります。
ですので、
__END__以下のデータにアクセスしたい場合はDATAという定数を使います。ファイルオブジェクトのように操作が出来ます。
Rubyには「__END__」という、スクリプトの終わりを定義する文字列があります。「__END__」のみで構成された行(前後に空白が入ると認識されません)があると、そこでスクリプトが終わります。
ですので、
str = "ABC" puts str __END__ str.split(//).each do |s| puts s end => ABCという感じにすると、最後のeachは実行されません。これ、スクリプトの途中までだけをデバッグする為に動かしたいときとか、凄く便利。
__END__以下のデータにアクセスしたい場合はDATAという定数を使います。ファイルオブジェクトのように操作が出来ます。
str = "ABC" puts str puts DATA.read __END__ str.split(//).each do |s| puts s end => ABC str.split(//).each do |s| puts s end面白い!今まではただ試行錯誤を繰り返しながらスクリプトを書いてたけど、Ruby技術者認定試験公式ガイド輪読会を始めてから、本当にベーシックな知識を知ることが多くて、すごく楽しいです。