Rubyの例外階層を理解する
例外はRubyの単なるクラスです。例外例外階層は、Exceptionから継承するすべてのクラスで構成されています。
これがRuby2.1の標準ライブラリの例外階層です。
Exception
NoMemoryError
ScriptError
LoadError
NotImplementedError
SyntaxError
SecurityError
SignalException
Interrupt
StandardError -- default for rescue
ArgumentError
UncaughtThrowError
EncodingError
FiberError
IOError
EOFError
IndexError
KeyError
StopIteration
LocalJumpError
NameError
NoMethodError
RangeError
FloatDomainError
RegexpError
RuntimeError -- default for raise
SystemCallError
Errno::*
ThreadError
TypeError
ZeroDivisionError
SystemExit
SystemStackError
例外がクラスツリーに配置される理由は、同様のタイプの例外を簡単に救済できるようにするためです。
たとえば、次のコードについて考えてみます。
begin
do_something
rescue StandardError => e
end
これにより、StandardErrorだけでなく、それを継承する例外も救済されます。それはあなたが興味を持っているほとんどすべての例外です。
独自のコードでは、すべてのカスタム例外が単一の基本クラスから継承される場合があります。
module MyLib
class Error < StandardError
end
class TimeoutError < Error
end
class ConnectionError < Error
end
end
...
begin
do_something
rescue MyLib::Error => e
# Rescues any of the exceptions defined above
end
-
Rubyでの挿入ソートを理解する
注:これは、Rubyを使用したさまざまなソートアルゴリズムの実装を検討するシリーズのパート4です。パート1ではバブルソート、パート2では選択ソート、パート3ではマージソートについて説明しました。 データを並べ替えるためのさまざまな方法を引き続き検討するため、挿入並べ替えに目を向けます。挿入ソートが好きな理由はたくさんあります!まず、挿入ソートは安定です。 、これは、等しいキーを持つ要素の相対的な順序を変更しないことを意味します。 インプレースアルゴリズムでもあります 、は、並べ替えられた要素を格納するための新しい配列を作成しないことを意味します。最後に、挿入ソートは、すぐにわかるように、実
-
Rubyでの複製とクローン:違いを理解する
Rubyでオブジェクトをコピーできることをご存知ですか?それだけでなく、これを行うには2つの異なる方法があります! これらの方法は : dup clone すぐに違いを探りますが、最初に… なぜオブジェクトのクローンを作成するのですか? ? Rubyの多くのオブジェクトは変更可能であり、変更することができます。 オブジェクトを変更したいが、元のコピーを保持する場合 その後、クローンを作成できます。 たとえば。 最初の要素を除くすべての要素を含む配列が必要な場合があります。 これを行う1つの方法 : a = [1,2,3,4,5] a[1..-1] # [2,3,4