class Struct::Passwd + Struct
クラスの継承リスト: Struct::Passwd < Struct < Enumerable < Object < Kernel
要約
Etc.#getpwent で得られる構造体。
この構造体の値を変更してもシステムには反映されません。
全てのシステムで提供されているメンバ。
- name
- passwd
- uid
- gid
- gecos
- dir
- shell
以降のメンバはシステムによっては提供されません。
- change
- quota
- age
- class
- comment
- expire
特異メソッド
new(*args) -> Class
-
Struct クラスに新しいサブクラスを作って、それを返します。
サブクラスでは構造体のメンバに対するアクセスメソッドが定義されています。
dog = Struct.new("Dog", :name, :age) fred = dog.new("fred", 5) fred.age = 6 printf "name:%s age:%d", fred.name, fred.age #=> "name:fred age:6" を出力します
実装の都合により、クラス名の省略は後づけの機能でした。 メンバ名に String を指定できるのは後方互換性のためだと考えた方が良いでしょう。 したがって、メンバ名は Symbol で指定するのが無難です。
第一引数が String の場合
args[0] が String の場合、クラス名になるので、大文字で始まる必要 があります。つまり、以下のような指定はエラーになります。
p Struct.new('foo', 'bar') # => -:1:in `new': identifier foo needs to be constant (NameError)
また args[1..-1] は、Symbol か String で指定します。
p Struct.new("Foo", :foo, :bar) # => Struct::Foo
第一引数が Symbol の場合
args[0] が Symbol の場合、生成した構造体クラスは名前の無い クラスになります。名前の無いクラスは最初に名前を求める際に代入され ている定数名を検索し、見つかった定数名をクラス名とします。
Foo = Struct.new(:foo, :bar) p Foo # => Foo
[SEE_ALSO] Class.new
new(*args) -> Struct
self[*args] -> Struct
-
(このメソッドは Struct の下位クラスにのみ定義されています) 構造体オブジェクトを生成して返します。
- [PARAM] args:
- 構造体の初期値を指定します。メンバの初期値は指定されなければ nil です。
- [RETURN]
- 構造体クラスのインスタンス。
- [EXCEPTION] ArgumentError:
- 構造体のメンバの数よりも多くの引数を指定した場合に発生します。
Foo = Struct.new(:foo, :bar) foo = Foo.new(1) p foo.values # => [1, nil]
members -> [String]
-
(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバの名前(String)の配列を返します。
Foo = Struct.new(:foo, :bar) p Foo.members # => ["foo", "bar"]
インスタンスメソッド
self == other -> bool
-
自身と other のクラスが同じであり、各メンバが == メソッドで比較して等しい場合に true を返します。そうでない場合に false を返します。
- [PARAM] other:
- 自身と比較したいオブジェクトを指定します。
Dog = Struct.new(:name, :age) dog1 = Dog.new("fred", 5) dog2 = Dog.new("fred", 5) p dog1 == dog2 #=> true p dog1.eql?(dog2) #=> true p dog1.equal?(dog2) #=> false
[SEE_ALSO] Struct#eql?
self[member] -> object
-
(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバの値を返します。
- [PARAM] member:
- Fixnum でメンバのインデックスを指定します。 Symbol, String でメンバの名前を指定します。
- [EXCEPTION] IndexError:
- member が整数で存在しないメンバを指定した場合に発生します。
- [EXCEPTION] NameError:
- member が String, Symbol で存在しないメンバを指定した場合に発生します。
Foo = Struct.new(:foo, :bar) obj = Foo.new('FOO', 'BAR') p obj[:foo] # => "FOO" p obj['bar'] # => "BAR" # p obj[:baz] # => in `[]': no member 'baz' in struct (NameError) p obj[0] # => "FOO" p obj[1] # => "BAR" p obj[-1] # => "BAR" # Array のように負のインデックスも指定できます。 p obj[2] # => in `[]': offset 2 too large for struct(size:2) (IndexError)
self[member] = value
-
(このメソッドは Struct の下位クラスにのみ定義されています) 構造体の member で指定されたメンバの値を value にして value を返します。
age -> Integer
-
エージ(整数)を返します。このメンバはシステム依存です。
age=(age)
-
エージ(整数)を設定します。このメンバはシステム依存です。
change -> Integer
-
パスワード変更時間(整数)を返します。このメンバはシステム依存です。
change=(change)
-
パスワード変更時間(整数)を設定します。このメンバはシステム依存です。
comment -> String
-
コメント(文字列)を返します。このメンバはシステム依存です。
comment=(comment)
-
コメント(文字列)を設定します。このメンバはシステム依存です。
dir -> String
-
このユーザのホームディレクトリを表すパスを返します。
dir=(dir)
-
このユーザのホームディレクトリを表すパスを設定します。
each {|value| ... } -> self
each -> Enumerable::Enumerator
-
(このメソッドは Struct の下位クラスにのみ定義されています) 構造体の各メンバに対して繰り返します。
each_pair {|member, value| ... } -> self
each_pair -> Enumerable::Enumerator
-
(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバ名(Symbol)と値の組を引数にブロックを繰り返し実行します。
Foo = Struct.new(:foo, :bar) Foo.new('FOO', 'BAR').each_pair {|m, v| p [m,v]} # => [:foo, "FOO"] [:bar, "BAR"]
eql?(other) -> bool
-
自身と other のクラスが同じであり、各メンバが eql? メソッドで比較して等しい場合に true を返します。そうでない場合に false を返します。
- [PARAM] other:
- 自身と比較したいオブジェクトを指定します。
Dog = Struct.new(:name, :age) dog1 = Dog.new("fred", 5) dog2 = Dog.new("fred", 5) p dog1 == dog2 #=> true p dog1.eql?(dog2) #=> true p dog1.equal?(dog2) #=> false
[SEE_ALSO] Struct#==
equal?(other) -> bool
-
指定された other が self 自身である場合のみ真を返します。 これは Object クラスで定義されたデフォルトの動作で す。
[SEE_ALSO] Struct#eql?, Struct#==
expire -> Integer
-
アカウント有効期限(整数)を返します。このメンバはシステム依存です。
expire=(expire)
-
アカウント有効期限(整数)を設定します。このメンバはシステム依存です。
gecos -> String
-
このユーザのフルネーム等の詳細情報を返します。
様々な構造化された情報を返す Unix システムも存在しますが、それはシステム依存です。
gecos=()
-
このユーザのフルネーム等の詳細情報を設定します。
gid -> Integer
-
このユーザの gid を返します。
gid=(gid)
-
このユーザの gid を設定します。
hash -> Integer
-
自身が保持するメンバのハッシュ値を元にして算出した整数を返します。 自身が保持するメンバの値が変化すればこのメソッドが返す値も変化します。
Dog = Struct.new(:name, :age) dog = Dog.new("fred", 5) p dog.hash #=> 7917421 dog.name = "john" p dog.hash #=> -38913223
length -> Fixnum
size -> Fixnum
-
(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバの数を返します。
members -> [String]
-
(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバの名前(文字列)の配列を返します。
Foo = Struct.new(:foo, :bar) p Foo.new.members # => ["foo", "bar"]
name -> String
-
このユーザのログイン名を返します。
name=(name)
-
このユーザのログイン名を設定します。
passwd -> String
-
このユーザの暗号化されたパスワードを返します。
シャドウパスワードが使用されている場合は、 'x' を返します。 このユーザがログインできない場合は '*' を返します。
passwd=(passwd)
-
このユーザの暗号化されたパスワードを設定します。
quota -> Integer
-
クォータ(整数)を返します。このメンバはシステム依存です。
quota=(quota)
-
クォータ(整数)を設定します。このメンバはシステム依存です。
shell -> String
-
このユーザのログインシェルを返します。
shell=(shell)
-
このユーザのログインシェルを設定します。
values -> [object]
to_a -> [object]
-
(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバの値を配列にいれて返します。
例えば以下のようにして passwd のエントリを出力できます。
require 'etc' print Etc.getpwuid.values.join(":"), "\n"
uclass -> String
-
ユーザアクセスクラス(文字列)を返します。このメンバはシステム依存です。
uclass=(class)
-
ユーザアクセスクラス(文字列)を設定します。このメンバはシステム依存です。
uid -> Integer
-
このユーザの uid を返します。
uid=(uid)
-
このユーザの uid を設定します。
values_at(*members) -> [object]
-
(このメソッドは Struct の下位クラスにのみ定義されています) 引数で指定されたメンバの値の配列を返します。
- [PARAM] members:
- Fixnum か Range でメンバのインデックスを指定します。
- [EXCEPTION] IndexError:
- member が整数で存在しないメンバを指定した場合に発生します。
Foo = Struct.new(:foo, :bar, :baz) obj = Foo.new('FOO', 'BAR', 'BAZ') p obj.values_at(0, 1, 2) # => ["FOO", "BAR", "BAZ"]