先日会社の tech channel で話題になったのでメモ。Rubiest の方々にとっ
ては常識なんですかね…?
$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]
$ ruby -e 'raise "aaa" rescue p $!'
#<RuntimeError: aaa>
$ ruby -e 'raise "aaa" rescue p $ERROR_INFO'
nil
$ ruby -r English -e 'raise "aaa" rescue p $ERROR_INFO'
#<RuntimeError: aaa>
Ruby はグローバル変数の初期値が nil なのがたちが悪い。個人的にはも
う $ERROR_INFO とかは使わないと思う。
C: Prefer $ERROR_INFO from the stdlib ‘English’ module over $!.
RuboCop 先生がこのようにお怒りだったので、出来るだけ長い変数名を使
うようにしていましたが、行間を読む必要があったみたいです。
=> require ‘English’ も必要。
関連情報
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/9271
まつもと ゆきひろです
In message “[ruby-dev:9270] Re: bang method returns string always”
on 00/02/23, GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:|>$~などの記号でない代替が必要だろうとは昔から思ってるんです。
|
|English.rb を組み込みにするのはどうですか??記号変数の撲滅と言う観点では前進ですが、$の削減と言う観点か
らは前進じゃないんですよねえ。
そういえば、まつもとさんは長い変数名が好きではないと、rebuild.fm
の 155
か 158
で話してました。
http://perldoc.jp/docs/perl/5.20.1/perlvar.pod
以下の名前は Perl では特別な意味を持ちます。 記号的な名前の多くは記憶法があるか、シェルでの類推が可能です。 それでも長い名前を使用したい場合には
use English;
とプログラムの最初に書いてください。
Perl 由来らしい。
関係ないけど Perl(真珠)は Shell(殻)に対応(?)していたのですね。