キーワード
-
ARGF
. class (11) - ArgumentError (11)
- ArithmeticSequence (6)
- Array (11)
- BasicObject (11)
- Chain (6)
- Class (11)
- CompatibilityError (11)
- ConditionVariable (18)
- Data (8)
- DomainError (11)
- EACCES (11)
- EADDRINUSE (11)
- EADDRNOTAVAIL (11)
- EADV (11)
- EAFNOSUPPORT (11)
- EAGAIN (11)
- EALREADY (11)
- EAUTH (11)
- EBADE (11)
- EBADF (11)
- EBADFD (11)
- EBADMSG (11)
- EBADR (11)
- EBADRPC (11)
- EBADRQC (11)
- EBADSLT (11)
- ECANCELED (11)
- ECAPMODE (10)
- EDEADLK (11)
- EDEADLOCK (11)
- EDESTADDRREQ (11)
- EFAULT (11)
- EHOSTUNREACH (11)
- EINVAL (11)
- EISNAM (11)
- ELIBACC (11)
- ELIBBAD (11)
- ELIBMAX (11)
- ENAMETOOLONG (11)
- ENAVAIL (11)
- ENEEDAUTH (11)
- ENETUNREACH (11)
- ENOANO (11)
- ENOATTR (11)
- ENODATA (11)
- ENOTCAPABLE (10)
- ENOTNAM (11)
- ENOTRECOVERABLE (11)
- EOWNERDEAD (11)
- EPROCUNAVAIL (11)
- EPROGMISMATCH (11)
- EPROGUNAVAIL (11)
- ERANGE (11)
- ERESTART (11)
- ERPCMISMATCH (11)
- ESTALE (11)
- ETOOMANYREFS (11)
- EUCLEAN (11)
- EUNATCH (11)
- Enumerator (11)
- FalseClass (11)
- Float (11)
- FloatDomainError (11)
- Hash (11)
- IO (11)
- InvalidByteSequenceError (11)
- Lazy (11)
- LoadError (11)
- LocalJumpError (11)
- Location (11)
- MatchData (11)
- Mutex (9)
- NameError (11)
- NilClass (11)
- NoMatchingPatternError (5)
- NoMethodError (11)
- Node (6)
- Proc (11)
- Queue (9)
- Random (11)
- Range (11)
- RangeError (11)
- Rational (11)
- Regexp (3)
- SignalException (11)
- SizedQueue (9)
- StandardError (11)
- Stat (11)
- Status (11)
- StopIteration (11)
- String (11)
- SyntaxError (11)
- SystemCallError (11)
- SystemStackError (11)
- Thread (11)
- ThreadError (11)
- ThreadGroup (11)
- TracePoint (11)
- TrueClass (11)
- UncaughtThrowError (10)
- UndefinedConversionError (11)
- WeakMap (11)
- Yielder (11)
- fatal (11)
検索結果
-
MatchData (12003.0)
-
正規表現のマッチに関する情報を扱うためのクラス。
...正規表現のマッチに関する情報を扱うためのクラス。
このクラスのインスタンスは、
* Regexp.last_match
* Regexp#match, String#match
* $~
などにより得られます。... -
NoMatchingPatternError (12003.0)
-
パターンマッチでどの条件にも一致せず、else節もない場合に発生します。
パターンマッチでどの条件にも一致せず、else節もない場合に発生します。 -
Thread
:: ConditionVariable (6045.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...です。
以下も ConditionVariable を理解するのに参考になります。
https://ruby-doc.com/docs/ProgrammingRuby/html/tut_threads.html#UF
=== Condition Variable とは
あるスレッド A が排他領域で動いていたとします。スレッド A は現在空いていない
リ......れはうまくいきません。
なぜなら、スレッド A は排他領域で動いているわけですから、他のスレッドは動くことが
できません。リソースを空けることもできません。スレッド A がリソースの空きを
待っていても、いつまで......のが Condition Variable です。
スレッド a で条件(リソースが空いているかなど)が満たされるまで wait メソッドで
スレッドを止めます。他のスレッド b において条件が満たされたなら signal
メソッドでスレッド a に対して条件が... -
Enumerator (6027.0)
-
each 以外のメソッドにも Enumerable の機能を提供するためのラッパークラスです。 また、外部イテレータとしても使えます。
...each 以外のメソッドにも Enumerable の機能を提供するためのラッパークラスです。
また、外部イテレータとしても使えます。
Enumerable モジュールは、 Module#include 先のクラスが持つ
each メソッドを元に様々なメソッドを提供し...... Array#map は Array#each の繰り返しを元にして定義されます。
Enumerator を介することにより String#each_byte のような
異なる名前のイテレータについても each と同様に Enumerable の機能を利用できます。
Enumerator を生成するには Enumera......erator を生成して返します。
=== 注意
外部イテレータとしての機能は Fiber を用いて実装されているため Fiber と同じ制限があります。
例えば以下のようなスレッドをまたいだ呼び出しはエラーになります。
//emlist[例][ruby]{
a... -
Hash (6027.0)
-
ハッシュテーブル(連想配列とも呼ぶ)のクラスです。ハッシュは任意の種類のオブ ジェクト(キー)から任意の種類のオブジェクト(値)への関連づけを行うことができます。
...下のようなリテラル (d:spec/literal#hash) で行われます。
{a => b, ... } # aはキー、bは値となる
{s: b , ... } # { :s => b, ... } と同じ。キーがシンボルの場合の省略した書き方
{"a+": b , ... } # { :"a+" => b, ... } と同じ。上の表現に空......ある必要があります。
* Object#hash ハッシュの格納に用いられるハッシュ値の計算
* Object#eql? キーの同一性判定
破壊的操作によってキーとして与えたオブジェクトの内容が変化し、Object#hash の返す
値が変わるとハッシュ......から値が取り出せなくなりますから、
Array、Hash
などのインスタンスはキーに向きません。Hash#rehash を参照。
ただし、 更新不可 (Object#frozen? が true) では無い文字列をキーとして与えた場合は、文字列をコピーし、コピーを... -
Thread
:: Backtrace :: Location (6021.0) -
Ruby のフレームを表すクラスです。
...#caller_locations から生成されます。
//emlist[例1][ruby]{
# caller_locations.rb
def a(skip)
caller_locations(skip)
end
def b(skip)
a(skip)
end
def c(skip)
b(skip)
end
c(0..2).map do |call|
puts call.to_s
end
//}
例1の実行結果:
caller_locations.rb:2:in `a'
caller_locat......:in `b'
caller_locations.rb:8:in `c'
//emlist[例2][ruby]{
# foo.rb
class Foo
attr_accessor :locations
def initialize(skip)
@locations = caller_locations(skip)
end
end
Foo.new(0..2).locations.map do |call|
puts call.to_s
end
//}
例2の実行結果:
init.rb:4:in `initialize'
in......it.rb:8:in `new'
init.rb:8:in `<main>'
=== 参考
* Ruby VM アドベントカレンダー #4 vm_backtrace.c: https://www.atdot.net/~ko1/diary/201212.html#d4... -
FloatDomainError (6019.0)
-
正負の無限大や NaN (Not a Number) を Bignum に変換しようとしたり、 NaN との比較を行ったときに発生します。
...正負の無限大や NaN (Not a Number) を Bignum に変換しようとしたり、
NaN との比較を行ったときに発生します。... -
Range (6019.0)
-
範囲オブジェクトのクラス。 範囲オブジェクトは文字どおり何らかの意味での範囲を表します。数の範囲はもちろん、 日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
...、
日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
==== 作り方
範囲オブジェクトは、Range.new を用いるほか、範囲演算子(`..' または `...')を
用いた d:spec/operator#range で生成できます。
い......ずれの方法でも始端と終端を与えます。
//emlist[範囲オブジェクトの例][ruby]{
Range.new(1, 5) # 1 以上 5 以下
1..5 # 同上
1...5 # 1 以上 5 未満
//}
この例で分かるように、範囲オブジェクトは終端を含む範囲も含まな......があります。
//emlist[値が範囲に含まれるかどうかを判定][ruby]{
p (1..5).cover?(6) # => false
p (1..5).cover?(5) # => true
p (1...5).cover?(5) # => false
//}
Range#cover? メソッドでの判定には演算子 <=> が使われます。
当然、始端と終端は <=> メ......範囲オブジェクト」
を作ることができるようになりました。
//emlist[終端を持たない範囲オブジェクト][ruby]{
p Range.new(1, nil) # 1 以上(上限無し)を表す
p(1..nil) # 同上
p(1..) # 同上(略した書き方)
//}
====......範囲オブジェクト」
を作ることができるようになりました。
//emlist[終端を持たない範囲オブジェクト][ruby]{
p Range.new(1, nil) # 1 以上(上限無し)を表す
p(1..nil) # 同上
p(1..) # 同上(略した書き方)
//}
また... -
Thread (6009.0)
-
スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Thread を使うことで並行プログラミングが可能になります。
...時に実行される制御の流れです。
Thread を使うことで並行プログラミングが可能になります。
=== 実装
ネイティブスレッドを用いて実装されていますが、
現在の実装では Ruby VM は Giant VM lock (GVL) を有しており、同時に実行......るとスレッドの実行も終
了します。ブロックの終了は正常な終了も例外などによる異常終了も含みます。
===[a:exception] 例外発生時のスレッドの振る舞い
あるスレッドで例外が発生し、そのスレッド内で rescue で捕捉されな......ドを Thread#join で待っている他の
スレッドがある場合、その待っているスレッドに対して、同じ例外が再度
発生します。
begin
t = Thread.new do
Thread.pass # メインスレッドが確実にjoinするように
raise "unhandled excepti... -
TracePoint (6009.0)
-
Kernel.#set_trace_func と同様の機能をオブジェクト指向的な API で 提供するクラスです。
...race_func と同様の機能をオブジェクト指向的な API で
提供するクラスです。
//emlist[例:例外に関する情報を収集する][ruby]{
trace = TracePoint.new(:raise) do |tp|
p [tp.lineno, tp.event, tp.raised_exception]
end
# => #<TracePoint:0x007f786a452448>
trace.enab......le
# => false
0 / 0
# => [5, :raise, #<ZeroDivisionError: divided by 0>]
//}
TracePoint.new または、TracePoint.trace で指定したブロック
は、メソッドの引数(上記の例では :raise)に対応するイベントが発生した時に
呼び出されます。
発生するイベ......は、TracePoint.new を参照してくださ
い。
=== 参考
* Ruby VM アドベントカレンダー #12 TracePoint の紹介 (1): https://www.atdot.net/~ko1/diary/201212.html#d12
* Ruby VM アドベントカレンダー #13 TracePoint の紹介 (2): https://www.atdot.net/~ko1/diary/201212.h...