ライブラリ
- ビルトイン (192)
- pp (11)
- prettyprint (11)
-
rubygems
/ requirement (11) - tsort (85)
クラス
-
Gem
:: Requirement (11) - Method (11)
- PP (11)
- PrettyPrint (11)
- Proc (99)
- Symbol (3)
- Thread (22)
キーワード
-
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (11) - === (11)
-
NEWS for Ruby 2
. 1 . 0 (11) -
NEWS for Ruby 2
. 2 . 0 (10) -
NEWS for Ruby 2
. 7 . 0 (5) -
NEWS for Ruby 3
. 0 . 0 (4) - OPS (11)
- Proc (11)
- Rubyで使われる記号の意味(正規表現の複雑な記号は除く) (11)
- [] (11)
-
add
_ trace _ func (11) - arity (11)
- call (11)
- curry (22)
-
each
_ strongly _ connected _ component (21) -
each
_ strongly _ connected _ component _ from (21) - format (11)
- irb (11)
- lambda? (11)
- parameters (11)
- proc (18)
-
ruby 1
. 9 feature (11) - seplist (11)
-
set
_ trace _ func (22) -
strongly
_ connected _ components (11) -
to
_ proc (14) - tsort (11)
-
tsort
_ each (21) - yield (11)
- オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (11)
- メソッド呼び出し(super・ブロック付き・yield) (11)
- 手続きオブジェクトの挙動の詳細 (11)
検索結果
先頭5件
-
Proc
# [](*arg) -> () (160.0) -
手続きオブジェクトを実行してその結果を返します。
...くは Proc#lambda? を参照してください。
「===」は when の所に手続きを渡せるようにするためのものです。
//emlist[例][ruby]{
def sign(n)
case n
when lambda{|n| n > 0} then 1
when lambda{|n| n < 0} then -1
else 0
end
end
p sign(-4) #=> -1
p sign(0) #=>......p sign(7) #=> 1
//}
また、以下のような syntactic sugar もあります。
//emlist[例][ruby]{
fib = lambda{|n|
case n
when 0 then 0
when 1 then 1
else
fib.(n - 2) + fib.(n - 1)
end
}
fib.(10) # => 55
//}
@param arg 手続きオブジェクトに与える引数を指定... -
Proc
# call(*arg) -> () (160.0) -
手続きオブジェクトを実行してその結果を返します。
...くは Proc#lambda? を参照してください。
「===」は when の所に手続きを渡せるようにするためのものです。
//emlist[例][ruby]{
def sign(n)
case n
when lambda{|n| n > 0} then 1
when lambda{|n| n < 0} then -1
else 0
end
end
p sign(-4) #=> -1
p sign(0) #=>......p sign(7) #=> 1
//}
また、以下のような syntactic sugar もあります。
//emlist[例][ruby]{
fib = lambda{|n|
case n
when 0 then 0
when 1 then 1
else
fib.(n - 2) + fib.(n - 1)
end
}
fib.(10) # => 55
//}
@param arg 手続きオブジェクトに与える引数を指定... -
Proc
# yield(*arg) -> () (160.0) -
手続きオブジェクトを実行してその結果を返します。
...くは Proc#lambda? を参照してください。
「===」は when の所に手続きを渡せるようにするためのものです。
//emlist[例][ruby]{
def sign(n)
case n
when lambda{|n| n > 0} then 1
when lambda{|n| n < 0} then -1
else 0
end
end
p sign(-4) #=> -1
p sign(0) #=>......p sign(7) #=> 1
//}
また、以下のような syntactic sugar もあります。
//emlist[例][ruby]{
fib = lambda{|n|
case n
when 0 then 0
when 1 then 1
else
fib.(n - 2) + fib.(n - 1)
end
}
fib.(10) # => 55
//}
@param arg 手続きオブジェクトに与える引数を指定... -
メソッド呼び出し(super・ブロック付き・yield) (156.0)
-
メソッド呼び出し(super・ブロック付き・yield) * super * block * yield * block_arg * numbered_parameters * call_method
...び出し(super・ブロック付き・yield)
* super
* block
* yield
* block_arg
* numbered_parameters
* call_method
//emlist[例][ruby]{
foo.bar()
foo.bar
bar()
print "hello world\n"
print
Class.new
Class::new
//}
文法:
[式 `.'] 識別子 [`(' [[`*'] 式] ... [`&' 式......挙動が異なります。
lambda でないブロックを呼び出したとき
* 引数の数が違ってもエラーになりません。
* 配列をひとつ渡したときにそれが引数の並びとして展開されることがあります。
//emlist[][ruby]{
def foo
yield 1,2,3
en......1
def bar
yield [1,2,3]
end
bar{|a, b, c| p a} #=> 1
def hoge
yield [1,2,3],4,5
end
hoge{|a, b, c| p a} #=> [1,2,3]
//}
http://www.a-k-r.org/d/2007-08.html#a2007_08_16_1
===[a:numbered_parameters] 番号指定パラメータ
ブロックに渡された値を参照するには、上記の... -
Gem
:: Requirement :: OPS -> Hash (154.0) -
比較演算子と対応する処理を格納したハッシュです。次の内容と等価です。
...です。
//emlist[][ruby]{
OPS = { #:nodoc:
"=" => lambda {|v, r| v == r },
"!=" => lambda {|v, r| v != r },
">" => lambda {|v, r| v > r },
"<" => lambda {|v, r| v < r },
">=" => lambda {|v, r| v >= r },
"<=" => lambda {|v, r| v <= r },
"~>" => lambda {|v, r| v >= r && v.......release < r.bump },
}.freeze
//}
次のように、Gem::Version どうしを比較します。
//emlist[][ruby]{
p Gem::Requirement::OPS["="].call(Gem::Version.new('3.1'), Gem::Version.new('3.0')) # => false
p Gem::Requirement::OPS["~>"].call(Gem::Version.new('3.1'), Gem::Version.new('3.0')) #... -
Thread
# set _ trace _ func(pr) -> Proc | nil (154.0) -
スレッドにトレース用ハンドラを設定します。
...返します。
//emlist[例][ruby]{
th = Thread.new do
class Trace
end
2.to_s
Thread.current.set_trace_func nil
3.to_s
end
th.set_trace_func lambda {|*arg| p arg }
th.join
# => ["line", "example.rb", 2, nil, #<Binding:0x00007fc8de87cb08>, nil]
# => ["c-call", "example.rb", 2, :inherited......, #<Binding:0x00007fc8de886770>, Class]
# => ["c-return", "example.rb", 2, :inherited, #<Binding:0x00007fc8de8844e8>, Class]
# => ["class", "example.rb", 2, nil, #<Binding:0x00007fc8de88e830>, nil]
# => ["end", "example.rb", 3, nil, #<Binding:0x00007fc8de88d6b0>, nil]
# => ["line", "example.rb", 4,......x00007fc8de88c440>, nil]
# => ["c-call", "example.rb", 4, :to_s, #<Binding:0x00007fc8de896f30>, Integer]
# => ["c-return", "example.rb", 4, :to_s, #<Binding:0x00007fc8de894a50>, Integer]
# => ["line", "example.rb", 5, nil, #<Binding:0x00007fc8de967b08>, nil]
# => ["c-call", "example.rb", 5, :current... -
Proc (150.0)
-
ブロックをコンテキスト(ローカル変数のスコープやスタックフ レーム)とともにオブジェクト化した手続きオブジェクトです。
...変数のスコープを保持していることは以下の例で
変数 var を参照できていることからわかります。
//emlist[例][ruby]{
var = 1
$foo = Proc.new { var }
var = 2
def foo
$foo.call
end
p foo # => 2
//}
===[a:should_use_next] 手続きを中断して値を......限です。
//emlist[問題なし][ruby]{
(1..5).each { break }
//}
//emlist[LocalJumpError が発生します。][ruby]{
pr = Proc.new { break }
(1..5).each(&pr)
//}
===[a:lambda_proc] lambda と proc と Proc.new とイテレータの違い
Kernel.#lambda と Proc.new はどちらも Proc ク......た通り lambda で生成した手続きオブジェクトはメソッドと同じように振る舞う
ことを意図されているため、例外 LocalJumpError は発生しません。
//emlist[例][ruby]{
def foo
Proc.new { return }
end
foo.call
# => in `call': return from proc-closure (L... -
メソッド呼び出し(super・ブロック付き・yield) (144.0)
-
メソッド呼び出し(super・ブロック付き・yield) * super * block * yield * block_arg * numbered_parameters * call_method
...び出し(super・ブロック付き・yield)
* super
* block
* yield
* block_arg
* numbered_parameters
* call_method
//emlist[例][ruby]{
foo.bar()
foo.bar
bar()
print "hello world\n"
print
Class.new
Class::new
//}
文法:
[式 `.'] 識別子 [`(' [[`*'] 式] ... [`&' 式......挙動が異なります。
lambda でないブロックを呼び出したとき
* 引数の数が違ってもエラーになりません。
* 配列をひとつ渡したときにそれが引数の並びとして展開されることがあります。
//emlist[][ruby]{
def foo
yield 1,2,3
en......1
def bar
yield [1,2,3]
end
bar{|a, b, c| p a} #=> 1
def hoge
yield [1,2,3],4,5
end
hoge{|a, b, c| p a} #=> [1,2,3]
//}
http://www.a-k-r.org/d/2007-08.html#a2007_08_16_1
===[a:numbered_parameters] 番号指定パラメータ
ブロックに渡された値を参照するには、上記の... -
Thread
# add _ trace _ func(pr) -> Proc (136.0) -
スレッドにトレース用ハンドラを追加します。
.../emlist[例][ruby]{
th = Thread.new do
class Trace
end
43.to_s
end
th.add_trace_func lambda {|*arg| p arg }
th.join
# => ["line", "example.rb", 4, nil, #<Binding:0x00007f98e107d0d8>, nil]
# => ["c-call", "example.rb", 4, :inherited, #<Binding:0x00007f98e1087448>, Class]
# => ["c-return", "exa......ing:0x00007f98e108e5e0>, nil]
# => ["line", "example.rb", 6, nil, #<Binding:0x00007f98e108d4b0>, nil]
# => ["c-call", "example.rb", 6, :to_s, #<Binding:0x00007f98e1097aa0>, Integer]
# => ["c-return", "example.rb", 6, :to_s, #<Binding:0x00007f98e1095cc8>, Integer]
//}
@see Thread#set_trace_func Kern... -
Symbol
# to _ proc -> Proc (130.0) -
self に対応する Proc オブジェクトを返します。
...成される Proc オブジェクトは lambda です。
//emlist[][ruby]{
:object_id.to_proc.lambda? # => true
//}
//emlist[明示的に呼ぶ例][ruby]{
:to_i.to_proc["ff", 16] # => 255 ← "ff".to_i(16)と同じ
//}
//emlist[暗黙に呼ばれる例][ruby]{
# メソッドに & とともにシ... -
TSort
. each _ strongly _ connected _ component(each _ node , each _ child) -> Enumerator (130.0) -
TSort.strongly_connected_components メソッドのイテレータ版です。
...ドを持つオブジェクトを指定します。
//emlist[使用例][ruby]{
require 'tsort'
g = {1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]}
each_node = lambda {|&b| g.each_key(&b) }
each_child = lambda {|n, &b| g[n].each(&b) }
TSort.each_strongly_connected_component(each_node, each_chil......d) {|scc| p scc }
# => [4]
# [2]
# [3]
# [1]
g = {1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}
each_node = lambda {|&b| g.each_key(&b) }
each_child = lambda {|n, &b| g[n].each(&b) }
TSort.each_strongly_connected_component(each_node, each_child) {|scc| p scc }
# => [4]
# [2, 3]
# [1]
//}
@see...