別のキーワード
ライブラリ
- ビルトイン (501)
-
cgi
/ session (12) - csv (12)
- date (12)
- digest (12)
- fiddle (24)
- getoptlong (12)
-
irb
/ frame (12) -
irb
/ xmp (12) - json (12)
- monitor (12)
-
net
/ http (24) -
net
/ protocol (24) - openssl (12)
- optparse (12)
- pathname (12)
- prime (12)
- pstore (12)
- psych (48)
-
rdoc
/ parser / ruby (24) - rexml (12)
-
rexml
/ document (120) - ripper (12)
-
ripper
/ filter (12) -
ripper
/ lexer (12) -
rubygems
/ commands / which _ command (12) -
rubygems
/ version (12) - stringio (12)
- strscan (12)
- thread (6)
- win32ole (60)
- zlib (12)
キーワード
- Array (12)
- Base (12)
- BasicObject (12)
- BlockCaller (12)
- CSV (12)
- Cipher (12)
- Class (12)
- Closure (12)
- Comment (12)
- CompatibilityError (12)
- Complex (12)
- ConditionVariable (12)
- ConverterNotFoundError (12)
- Data (9)
- Date (12)
- Default (12)
- EXXX (12)
- Encoding (12)
- Entity (12)
- Enumerator (12)
- ExternalEntity (12)
- Fiber (12)
- Filter (12)
- Float (12)
- Frame (12)
- FrozenError (8)
- GetoptLong (12)
- GzipWriter (12)
- HTTPRequest (12)
- HTTPServerException (12)
- Instruction (12)
- InstructionSequence (12)
- InvalidByteSequenceError (12)
- KeyError (12)
- Lazy (12)
- Lexer (12)
- Location (12)
- MemoryStore (12)
- Method (12)
- Monitor (12)
- Node (7)
- NotImplementedError (12)
- NotationDecl (12)
- Numeric (12)
- OptionParser (12)
- PStore (12)
- ParseException (12)
- Pathname (12)
- Pretty (12)
- Prime (12)
- Proc (12)
- ProtoCommandError (12)
- ProtoSyntaxError (12)
- Queue (12)
- Range (12)
- Rational (12)
- Regexp (12)
- RegexpError (12)
- Ripper (12)
- RubyLex (12)
- RubyVM (12)
- ScalarScanner (12)
- ScriptError (12)
- Set (3)
- SizedQueue (12)
- Stat (12)
- State (12)
- Stream (12)
- String (12)
- StringIO (12)
- StringScanner (12)
- Symbol (12)
- SystemCallError (12)
- SystemExit (12)
- Text (12)
- Thread (12)
- Time (12)
- TracePoint (12)
- Transitive (12)
- TreeBuilder (12)
- UnboundMethod (12)
- UndefinedConversionError (12)
- Version (12)
- WIN32OLE (12)
-
WIN32OLE
_ EVENT (12) -
WIN32OLE
_ TYPE (12) -
WIN32OLE
_ VARIABLE (12) -
WIN32OLE
_ VARIANT (12) - WhichCommand (12)
- XMLDecl (12)
- XMP (12)
- YAMLTree (12)
- fatal (12)
検索結果
-
Errno
:: EXXX (93.0) -
システム依存のエラーコードのそれぞれに対応する一連の例外クラスです。 Rubyのライブラリ内部でシステムコールや一部のC言語関数が失敗したときに発生します。
...システム依存のエラーコードのそれぞれに対応する一連の例外クラスです。
Rubyのライブラリ内部でシステムコールや一部のC言語関数が失敗したときに発生します。
実際には「EXXX」というクラスが定義されているわけでは......、Rubyは例外 Errno::ENOENT を発生させます。
Ruby は処理系がコンパイルされるときに、デフォルトで下記リストのような Errno::EXXX クラスを定義しようとします。
動作環境に EXXX というエラーコードが存在しない場合、Rubyはそ......ラー番号を表す 3 桁の数字)
という名前の例外クラスが自動的に作成され、発生します。
(これは Ruby 内部でのみ行われ、 Ruby プログラム上で SystemCallError.new に一覧にないコードを渡してもクラスは作成されません)
それぞ... -
Ripper
:: Filter (93.0) -
イベントドリブンスタイルで Ruby プログラムを加工するためのクラスです。
...ブンスタイルで Ruby プログラムを加工するためのクラスです。
このクラスを継承して、必要なイベントに対応するメソッドを定義して使用し
ます。
=== 使用例
//emlist[][ruby]{
require 'ripper'
require 'cgi'
class Ruby2HTML < Ripper::Filter......f << %Q[<span class="comment">#{CGI.escapeHTML(tok)}</span>]
end
def on_tstring_beg(tok, f)
f << %Q[<span class="string">#{CGI.escapeHTML(tok)}]
end
def on_tstring_end(tok, f)
f << %Q[#{CGI.escapeHTML(tok)}</span>]
end
end
Ruby2HTML.new(ARGF).parse('')
//}
Ruby プログラ......イベントを実行します。イベントはプログラムに書いた順番で実行されます。
上記の例では、parse メソッドに渡した空文字列を初期値として、イベントハ
ンドラが ARGF で渡された Ruby プログラムを HTML にして返します。... -
Numeric (85.0)
-
数値を表す抽象クラスです。Integer や Float などの数値クラス は Numeric のサブクラスとして実装されています。
...覧です。実際にどのメソッドがどのクラスに定義されているかはそれぞ
れのクラスを参照してください。
=> ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin15]
Numeric Integer Float Rational Complex
-------......のように定義できます。
//emlist[例][ruby]{
if n > 0 then
n.ceil
else
n.floor
end
//}
また、任意桁の切上げ、切捨て、四捨五入を行うメソッドは以下のように
定義できます。
//emlist[][ruby]{
class Numeric
def roundup(d=0)
x = 10**d
if se......題を
考えれば、被除数や除数が整数でなくてもよいことが分かります。
//emlist[例: Float の世界の整商と剰余][ruby]{
p 2.5.divmod(0.75) # => [3, 0.25]
# 2.5 メートルの紐から 0.75 メートルの紐が 3 本取れて 0.25 メートル余る
//}
ただし... -
Range (85.0)
-
範囲オブジェクトのクラス。 範囲オブジェクトは文字どおり何らかの意味での範囲を表します。数の範囲はもちろん、 日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
...[範囲オブジェクトの例][ruby]{
Range.new(1, 5) # 1 以上 5 以下
1..5 # 同上
1...5 # 1 以上 5 未満
//}
この例で分かるように、範囲オブジェクトは終端を含む範囲も含まない範囲も表せます。
Ruby 2.6.0 からは、終端に nil......ない範囲オブジェクト」
を作ることができるようになりました。
//emlist[終端を持たない範囲オブジェクト][ruby]{
p Range.new(1, nil) # 1 以上(上限無し)を表す
p(1..nil) # 同上
p(1..) # 同上(略した書き方)
//}
=......の範囲に
含まれるか否かを判定する」ということがあります。
//emlist[値が範囲に含まれるかどうかを判定][ruby]{
p (1..5).cover?(6) # => false
p (1..5).cover?(5) # => true
p (1...5).cover?(5) # => false
//}
Range#cover? メソッドでの判定には演算... -
WIN32OLE (81.0)
-
OLEオートメーションサーバをRubyで操作するためのクラスです。
...OLEオートメーションサーバをRubyで操作するためのクラスです。
Windowsの多くのアプリケーションやライブラリは、COMと呼ばれるAPI群を利用
して他のプログラムから操作できます。WIN32OLEがサポートしているのは、
COMのAPIの......は、OLEオートメーションサーバが提供するメソッドやプ
ロパティ(Rubyの属性に対応)をスクリプトから呼び出す手段を提供します。
呼び出しには、Rubyのオブジェクトと同様にオブジェクトに続けて「.」とメソッ
ド名、必......ものではあり
ません。
WIN32OLEはシングルスレッドモードでCOMとインターフェイスします。このため、
ruby 1.9以降のRubyのThreadとネイティブスレッドが1対1で対応する実行環境
ではスレッドをまたがる呼び出しはエラーとなり... -
Thread
:: Backtrace :: Location (69.0) -
Ruby のフレームを表すクラスです。
...Ruby のフレームを表すクラスです。
Kernel.#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_locations.rb:5: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'
init.rb:8:in `new'
init.rb:8:in `<main>'
=== 参考
* Ruby VM アドベントカレンダー #4 vm_backtrace.c: https://www.atdot.net/~ko1/diary/201212.html#d4... -
Fiber (61.0)
-
ノンプリエンプティブな軽量スレッド(以下ファイバーと呼ぶ)を提供します。 他の言語では coroutine あるいは semicoroutine と呼ばれることもあります。 Thread と違いユーザレベルスレッドとして実装されています。
...ストを切り替えた時点で解消されます。
ファイバーが終了するとその親にコンテキストが切り替わります。
Ruby 3.1 から fiber を require しなくても、
コンテキストの切り替えに制限のない Fiber#transfer が使えます。
任意のフ......きます。
=== 例外
ファイバー実行中に例外が発生した場合、親ファイバーに例外が伝播します。
//emlist[例:][ruby]{
f = Fiber.new do
raise StandardError, "hoge"
end
begin
f.resume # ここでも StandardError が発生する。
rescue => e
p e.message #......と親にコンテキストを切り替えます。
Fiber.yield の引数が、親での Fiber#resume の返り値になります。
//emlist[例:][ruby]{
f = Fiber.new do
n = 0
loop do
Fiber.yield(n)
n += 1
end
end
5.times do
p f.resume
end
#=> 0
1
2
3
4
//}
以下... -
Numeric (61.0)
-
数値を表す抽象クラスです。Integer や Float などの数値クラス は Numeric のサブクラスとして実装されています。
...覧です。実際にどのメソッドがどのクラスに定義されているかはそれぞ
れのクラスを参照してください。
=> ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
Numeric Integer Fixnum Bignum Float Rational C......のように定義できます。
//emlist[例][ruby]{
if n > 0 then
n.ceil
else
n.floor
end
//}
また、任意桁の切上げ、切捨て、四捨五入を行うメソッドは以下のように
定義できます。
//emlist[][ruby]{
class Numeric
def roundup(d=0)
x = 10**d
if se......題を
考えれば、被除数や除数が整数でなくてもよいことが分かります。
//emlist[例: Float の世界の整商と剰余][ruby]{
p 2.5.divmod(0.75) # => [3, 0.25]
# 2.5 メートルの紐から 0.75 メートルの紐が 3 本取れて 0.25 メートル余る
//}
ただし......覧です。実際にどのメソッドがどのクラスに定義されているかはそれぞ
れのクラスを参照してください。
=> ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin15]
Numeric Integer Float Rational Complex
-------... -
Range (61.0)
-
範囲オブジェクトのクラス。 範囲オブジェクトは文字どおり何らかの意味での範囲を表します。数の範囲はもちろん、 日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
...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]{
(3..5).each{ |i| p i }
# => 3
# 4
# 5
(3...5).each{ |i| p i }
# => 3
# 4
//}
繰り返しの範囲を表す範囲オブジェクトは... -
Fiber (49.0)
-
ノンプリエンプティブな軽量スレッド(以下ファイバーと呼ぶ)を提供します。 他の言語では coroutine あるいは semicoroutine と呼ばれることもあります。 Thread と違いユーザレベルスレッドとして実装されています。
...きます。
=== 例外
ファイバー実行中に例外が発生した場合、親ファイバーに例外が伝播します。
//emlist[例:][ruby]{
f = Fiber.new do
raise StandardError, "hoge"
end
begin
f.resume # ここでも StandardError が発生する。
rescue => e
p e.message #......と親にコンテキストを切り替えます。
Fiber.yield の引数が、親での Fiber#resume の返り値になります。
//emlist[例:][ruby]{
f = Fiber.new do
n = 0
loop do
Fiber.yield(n)
n += 1
end
end
5.times do
p f.resume
end
#=> 0
1
2
3
4
//}
以下......テレータを外部イテレータに変換する例です。
実際 Enumerator は Fiber を用いて実装されています。
//emlist[例:][ruby]{
def enum2gen(enum)
Fiber.new do
enum.each{|i|
Fiber.yield(i)
}
end
end
g = enum2gen(1..100)
p g.resume #=> 1
p g.resume #... -
Method (49.0)
-
Object#method によりオブジェクト化され たメソッドオブジェクトのクラスです。
...][ruby]{
class Foo
def foo(arg)
"foo called with arg #{arg}"
end
end
m = Foo.new.method(:foo)
p m # => #<Method: Foo#foo>
p m.call(1) # => "foo called with arg 1"
//}
名前のないメソッド(の代わり)が必要なら Proc を使うと良い。
//emlist[例][ruby]{......b1fcc>
p pr.call(1) # => "proc called with arg 1"
//}
Method オブジェクトが有用なのは以下のような場合。
//emlist[例][ruby]{
class Foo
def foo() "foo" end
def bar() "bar" end
def baz() "baz" end
end
obj = Foo.new
# 任意のキーとメソッドの関係をハッシ......る(Method オブジェクトはレシーバを保持する)必
要がないなら Object#public_sendを使う方法も有用。
//emlist[例][ruby]{
class Foo
def foo() "foo" end
def bar() "bar" end
def baz() "baz" end
end
# 任意のキーとメソッド(の名前)の関係をハッシュ... -
Regexp (49.0)
-
正規表現のクラス。正規表現のリテラルはスラッシュで囲んだ形式 で記述します。
...はスラッシュで囲んだ形式
で記述します。
//emlist[][ruby]{
/^this is regexp/
//}
Regexp.new(string) を使って正規表現オブジェクトを動的に生成する
こともできます。
//emlist[][ruby]{
str = "this is regexp"
rp1 = Regexp.new("^this is regexp")
p rp1 =~ s......Regexp.last_match[0] # => "this is regexp"
//}
Ruby 3.0.0 から正規表現リテラルは freeze されるようになりました。
//emlist[][ruby]{
p /abc/.frozen?
# => true
p /a#{42}bc/.frozen?
# => true
p Regexp.new('abc').frozen?
# => false
//}
spec/regexp や d:spec/literal#regexp も参... -
StringScanner (49.0)
-
StringScanner は文字列スキャナクラスです。 簡単に高速なスキャナを記述できます。
...StringScanner は文字列スキャナクラスです。
簡単に高速なスキャナを記述できます。
//emlist[例][ruby]{
require 'strscan'
s = StringScanner.new('This is an example string')
s.eos? #=> false
p s.scan(/\w+/) #=> "This"
p s.scan(/\w+/) #=> nil
p s.scan(/\s......先頭にあり、
その地点でのみマッチを試します。マッチしたらその後ろにポインタを進めます。
//emlist[例][ruby]{
require 'strscan'
## a string and a scan pointer ("_" = scan pointer)
s = StringScanner.new('This is an example string')
# _This is an example......でもマッチしたい場合は、StringScanner#scan_untilなど
を使ってください。
//emlist[例: scan, scan_until の動作の違い][ruby]{
require 'strscan'
def case1
s = StringScanner.new('test string')
p s.scan(/t/) #=> "t"
p s.scan(/\w+/) #=> "est"
p s.scan(/stri...