124件ヒット
[1-100件を表示]
(0.067秒)
種類
- インスタンスメソッド (100)
- 文書 (12)
- 特異メソッド (12)
クラス
- Module (36)
- Object (12)
-
Rake
:: FileList (24) - Refinement (4)
- Vector (12)
モジュール
- Enumerable (12)
オブジェクト
- main (12)
キーワード
-
append
_ features (12) - each (12)
-
each
_ entry (12) - extend (12)
-
import
_ methods (4) -
prepend
_ features (12) - resolve (12)
-
ruby 1
. 8 . 4 feature (12)
検索結果
先頭5件
-
Module
# include(*mod) -> self (18267.0) -
モジュール mod をインクルードします。
...てしまうような include を行った場合に発生します。
//emlist[例][ruby]{
module M
end
module M2
include M
end
module M
include M2
end
//}
実行結果:
-:3:in `append_features': cyclic include detected (ArgumentError)
from -:3:in `include'
from -:3......。
インクルードは多重継承の代わりに用いられており、 mix-in とも呼びます。
//emlist[例][ruby]{
class C
include FileTest
include Math
end
p C.ancestors
# => [C, Math, FileTest, Object, Kernel]
//}
モジュールの機能追加は、クラスの継承関係の......ッド探索の順序です)。
同じモジュールを二回以上 include すると二回目以降は無視されます。
//emlist[例][ruby]{
module M
end
class C1
include M
end
class C2 < C1
include M # この include は無視される
end
p C2.ancestors # => [C2, C1, M, Object, Ker... -
main
. include(*modules) -> self (18219.0) -
引数 modules で指定したモジュールを後ろから順番に Object にインクルードします。
...odules Module のインスタンス( Enumerable など)を指定します。
@raise ArgumentError 継承関係が循環してしまうような include を行った場
合に発生します。
//emlist[例:][ruby]{
include Math
hypot(3, 4) # => 5.0
//}
@see Module#include... -
Rake
:: FileList # include(*filenames) -> self (18213.0) -
ファイル名のパターンを追加リストに登録します。 配列が与えられた場合、配列の各要素が追加されます。
...ターンを追加リストに登録します。
配列が与えられた場合、配列の各要素が追加されます。
@param filenames 追加するファイル名のパターンを指定します。
例:
file_list.include("*.java", "*.cfg")
file_list.include %w( math.c lib.h *.o )... -
Object
# extend(*modules) -> self (130.0) -
引数で指定したモジュールのインスタンスメソッドを self の特異 メソッドとして追加します。
...引数で指定したモジュールのインスタンスメソッドを self の特異
メソッドとして追加します。
Module#include は、クラス(のインスタンス)に機能を追加します
が、extend は、ある特定のオブジェクトだけにモジュールの機能を......クラスは不可)。
@return self を返します。
//emlist[][ruby]{
module Foo
def a
'ok Foo'
end
end
module Bar
def b
'ok Bar'
end
end
obj = Object.new
obj.extend Foo, Bar
p obj.a #=> "ok Foo"
p obj.b #=> "ok Bar"
class Klass
include Foo
extend Bar
end
p Klass.new.a......る Module#include」
と言い替えることもできます。
ただしその場合、フック用のメソッド
が Module#extended ではなく Module#included になるという違いがあります。
//emlist[][ruby]{
# obj.extend Foo, Bar とほぼ同じ
class << obj
include Foo, Bar
en... -
Module
# append _ features(module _ or _ class) -> self (118.0) -
モジュール(あるいはクラス)に self の機能を追加します。
...ラス)に self の機能を追加します。
このメソッドは Module#include の実体であり、
include を Ruby で書くと以下のように定義できます。
//emlist[例][ruby]{
def include(*modules)
modules.reverse_each do |mod|
# append_features や included はプライ......ベートメソッドなので
# 直接 mod.append_features(self) などとは書けない
mod.__send__(:append_features, self)
mod.__send__(:included, self)
end
end
//}
@see Module#included... -
Enumerable
# each _ entry {|obj| block} -> self (106.0) -
ブロックを各要素に一度ずつ適用します。
...す。
一要素として複数の値が渡された場合はブロックには配列として渡されます。
//emlist[例][ruby]{
class Foo
include Enumerable
def each
yield 1
yield 1,2
end
end
Foo.new.each_entry{|o| print o, " -- "}
# => 1 -- [1, 2] --
//}
ブロックを省略... -
Module
# prepend _ features(mod) -> self (106.0) -
Module#prepend から呼び出されるメソッドで、 prepend の処理の実体です。このメソッド自体は mod で指定した モジュール/クラスの継承チェインの先頭に self を追加します。
...、
prepend の処理の実体です。このメソッド自体は mod で指定した
モジュール/クラスの継承チェインの先頭に self を追加します。
このメソッドを上書きすることで、prepend の処理を変更したり
追加したりすることができます......mod が返されます
//emlist[例][ruby]{
class Recorder
RECORDS = []
end
module X
def self.prepend_features(mod)
Recorder::RECORDS << mod
end
end
class A
prepend X
end
class B
include X
end
class C
prepend X
end
Recorder::RECORDS # => [A, C]
//}
@see Module#prepend, Module#... -
Rake
:: FileList # resolve -> self (106.0) -
追加リストと除外リストを評価します。
...する
IO.write("test.rb", "test")
IO.write("test.java", "test")
IO.write("test.js", "test")
task default: :test_rake_app
task :test_rake_app do
file_list = FileList.new("*.rb")
file_list.include("*.java")
file_list.exclude("*.js")
file_list.resolve # => ["test.rb", "test.java"]
end
//}... -
Refinement
# import _ methods(*modules) -> self (106.0) -
モジュールからメソッドをインポートします。
...モジュールからメソッドをインポートします。
Module#includeと違って、import_methods はメソッドをコピーして
refinement に追加して、refinementでインポートしたメソッドを有効化します。
メソッドをコピーするため、Rubyコードで......けしか
インポートできないことに注意してください。
//emlist[][ruby]{
module StrUtils
def indent(level)
' ' * level + self
end
end
module M
refine String do
import_methods StrUtils
end
end
using M
p "foo".indent(3) # => " foo"
module M
refine String do...