別のキーワード
種類
- インスタンスメソッド (1606)
- 特異メソッド (857)
- モジュール関数 (762)
- 文書 (66)
ライブラリ
- ビルトイン (1802)
- base64 (22)
- bigdecimal (132)
-
bigdecimal
/ math (66) -
bigdecimal
/ util (33) -
cgi
/ session (11) - date (113)
-
digest
/ sha2 (11) - etc (44)
- fileutils (11)
- getoptlong (11)
-
io
/ console (11) - ipaddr (11)
- json (11)
- matrix (66)
-
net
/ http (22) - observer (11)
- open-uri (22)
- optparse (154)
- pathname (22)
-
rdoc
/ markup / to _ html _ crossref (11) -
rubygems
/ requirement (11) -
rubygems
/ version (22) - set (231)
- shellwords (44)
- socket (11)
- stringio (11)
- strscan (22)
- syslog (99)
-
test
/ unit (1) - time (77)
- tmpdir (22)
- uri (55)
-
webrick
/ utils (11) - zlib (11)
クラス
-
ARGF
. class (22) - Array (184)
- BasicSocket (11)
- BigDecimal (88)
-
CGI
:: Session (11) - Data (10)
- Date (36)
- DateTime (77)
-
Digest
:: SHA2 (11) - Dir (22)
- Encoding (22)
-
Enumerator
:: Lazy (173) - File (14)
- Float (22)
- FrozenError (5)
-
Gem
:: Requirement (11) -
Gem
:: Version (22) - GetoptLong (11)
- Hash (44)
- IO (55)
- IPAddr (11)
- Integer (92)
- KeyError (14)
- Matrix (44)
- Module (11)
-
Net
:: HTTP (22) - Numeric (84)
- Object (88)
- OptionParser (154)
- Pathname (22)
- Proc (29)
-
RDoc
:: Markup :: ToHtmlCrossref (11) - Random (77)
- Range (87)
- Rational (11)
- Regexp (11)
- Set (231)
- String (55)
- StringIO (11)
- StringScanner (22)
- Struct (44)
- Thread (20)
- Time (201)
- TracePoint (7)
-
URI
:: FTP (33) - Vector (22)
-
Zlib
:: GzipReader (11)
モジュール
- Base64 (22)
- BigMath (88)
- Comparable (65)
- Enumerable (44)
- Etc (44)
- FileUtils (11)
- JSON (11)
- Kernel (355)
- Marshal (22)
- Observable (11)
- OpenURI (22)
- Process (11)
-
Process
:: GID (22) -
Process
:: UID (22) - Shellwords (33)
- Signal (22)
- Syslog (99)
-
Test
:: Unit (1) - URI (22)
-
WEBrick
:: Utils (11)
オブジェクト
- main (11)
キーワード
- & (11)
- * (33)
- + (11)
- - (11)
-
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (11) - < (11)
- <= (11)
- >= (11)
- BigDecimal (22)
- Complex (22)
- E (11)
- Float (11)
- Integer (11)
-
NEWS for Ruby 2
. 5 . 0 (7) -
NEWS for Ruby 3
. 0 . 0 (4) - PI (11)
- Rational (11)
- [] (52)
- ^ (11)
- add (11)
- alert (11)
- atan (11)
- begin (11)
- between? (11)
- build (22)
-
change
_ privilege (22) -
chunk
_ while (8) - civil (17)
- clamp (10)
- clone (11)
-
cofactor
_ expansion (11) - collect (11)
-
collect
_ concat (11) - commercial (17)
- cos (11)
- create (11)
-
create
_ listeners (11) - crit (11)
- cross (11)
-
cross
_ product (11) - debug (11)
-
decode
_ www _ form (11) -
decode
_ www _ form _ component (11) - detect (22)
- difference (11)
- digits (22)
- dirname (3)
- disjoint? (11)
- div (11)
- drop (11)
- dump (33)
- dup (11)
- emerg (11)
- empty (11)
- end (11)
-
enum
_ for (44) - err (11)
- exec (44)
- exp (11)
- fail (33)
- fileno (11)
- filter (6)
-
filter
_ map (5) - find (33)
-
find
_ all (11) - first (44)
-
first
_ minor (11) -
flat
_ map (11) - flatten (22)
- flatten! (22)
-
from
_ name (22) - gcd (11)
- gcdlcm (11)
- getgrgid (11)
- getgrnam (11)
- getpwnam (11)
- getpwuid (11)
- gm (22)
-
handle
_ interrupt (11) - httpdate (11)
- include (22)
- info (11)
- inspect (11)
- intersect? (11)
- intersection (11)
- iso8601 (11)
- jd (11)
- join (22)
- key (7)
- kill (11)
- lambda (17)
- lambda? (11)
-
laplace
_ expansion (11) - last (44)
- lcm (11)
- limit (11)
- local (22)
- log (22)
- map (11)
-
marshal
_ load (11) - merge (11)
- mktime (22)
- mktmpdir (22)
- mode (22)
- mult (11)
- name= (9)
- new (236)
- new2 (11)
- notice (11)
-
notify
_ observers (11) - now (11)
- on (132)
-
open
_ uri (22) - ord (11)
- ordinal (17)
- pack (19)
- pack テンプレート文字列 (11)
- parse (50)
- peek (11)
- peep (11)
- printf (22)
- proc (18)
-
proper
_ subset? (11) -
proper
_ superset? (11) -
public
_ send (22) - raise (33)
- rand (66)
- raw (11)
- read (44)
- readpartial (11)
- receiver (12)
- reject (33)
-
relative
_ path _ from (11) - replace (11)
- replicate (11)
- request (22)
- rfc2822 (11)
- rfc822 (11)
-
ruby 1
. 6 feature (11) -
ruby 1
. 8 . 4 feature (11) - sample (44)
- seek (11)
- select (11)
-
setup
_ argv (1) - shellsplit (22)
- shellwords (11)
- shift (22)
- shutdown (11)
- sin (11)
- spawn (44)
- split (11)
- sqrt (22)
- step (94)
-
strict
_ decode64 (11) - strptime (17)
- sub (33)
- subset? (11)
- subtract (11)
- superset? (11)
- system (44)
- take (11)
- throw (1)
-
to
_ d (33) -
to
_ enum (44) -
to
_ i (22) -
to
_ s (11) - trap (22)
- union (22)
- unpack (11)
- uptodate? (11)
-
urlsafe
_ decode64 (11) - utc (22)
- warning (11)
- with (2)
- xmlschema (11)
- | (11)
- クラス/メソッドの定義 (11)
検索結果
先頭5件
-
Comparable
# >(other) -> bool (18118.0) -
比較演算子 <=> をもとにオブジェクト同士を比較します。 <=> が正の整数を返した場合に、true を返します。 それ以外の整数を返した場合に、false を返します。
...=> をもとにオブジェクト同士を比較します。
<=> が正の整数を返した場合に、true を返します。
それ以外の整数を返した場合に、false を返します。
@param other 自身と比較したいオブジェクトを指定します。
@raise ArgumentError <=>......が nil を返したときに発生します。
//emlist[例][ruby]{
1 > 0 # => true
1 > 1 # => false
//}... -
Comparable
# >=(other) -> bool (6106.0) -
比較演算子 <=> をもとにオブジェクト同士を比較します。 <=> が正の整数か 0 を返した場合に、true を返します。 それ以外の整数を返した場合に、false を返します。
...比較演算子 <=> をもとにオブジェクト同士を比較します。
<=> が正の整数か 0 を返した場合に、true を返します。
それ以外の整数を返した場合に、false を返します。
@param other 自身と比較したいオブジェクトを指定します。......@raise ArgumentError <=> が nil を返したときに発生します。
//emlist[例][ruby]{
1 >= 0 # => true
1 >= 1 # => true
1 >= 2 # => false
//}... -
ruby 1
. 8 . 4 feature (450.0) -
ruby 1.8.4 feature ruby 1.8.4 での ruby 1.8.3 からの変更点です。
...e/Ruby本体>))
* ((<ruby 1.8.4 feature/Symbol [bug]>))
* ((<ruby 1.8.4 feature/Symbol [bug]>))
* ((<ruby 1.8.4 feature/super [bug]>))
* ((<ruby 1.8.4 feature/正規表現 [bug]>))
* ((<ruby 1.8.4 feature/シグナル [bug]>))
* ((<ruby 1.8.4 feature/組み込みライブラリ>))
* ((<r......d#bind [bug]>))
* ((<ruby 1.8.4 feature/set_trace_func [bug]>))
* ((<ruby 1.8.4 feature/set_trace_func [change]>))
* ((<ruby 1.8.4 feature/printf [bug]>))
* ((<ruby 1.8.4 feature/Hash [bug]>))
* ((<ruby 1.8.4 feature/test [bug]>))
* ((<ruby 1.8.4 feature/File.identical? [new]>))
* ((<r......html#p01>))
# ruby 1.8.4 (2005-12-01) [i686-linux]
# ArgumentError
printf("%2147483648$d\n") # -e:1:in `printf': invalid index - -2147483648$ (ArgumentError)
printf("%2147483649$d\n") # -e:1:in `printf': invalid index - -2147483647$ (ArgumentError)... -
Struct
. new(*args , keyword _ init: nil) -> Class (221.0) -
Struct クラスに新しいサブクラスを作って、それを返します。
...。
//emlist[例][ruby]{
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......1, 2) # => #<struct Point1 x=1, y=2>
Point1.new(x: 1, y: 2) # => #<struct Point1 x=1, y=2>
Point1.new(x: 1) # => #<struct Point1 x=1, y=nil>
Point1.new(y: 2) # => #<struct Point1 x=nil, y=2>
Point1.new(x: 1, y: 2, z: 3) # => ArgumentError (unknown keywords:......1, 2) # => #<struct Point2 x=1, y=2>
Point2.new(x: 1, y: 2) # => #<struct Point2 x=1, y=2>
Point2.new(x: 1) # => #<struct Point2 x=1, y=nil>
Point2.new(y: 2) # => #<struct Point2 x=nil, y=2>
Point2.new(x: 1, y: 2, z: 3) # => ArgumentError (unknown keywords:... -
Struct
. new(*args , keyword _ init: nil) {|subclass| block } -> Class (221.0) -
Struct クラスに新しいサブクラスを作って、それを返します。
...。
//emlist[例][ruby]{
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......1, 2) # => #<struct Point1 x=1, y=2>
Point1.new(x: 1, y: 2) # => #<struct Point1 x=1, y=2>
Point1.new(x: 1) # => #<struct Point1 x=1, y=nil>
Point1.new(y: 2) # => #<struct Point1 x=nil, y=2>
Point1.new(x: 1, y: 2, z: 3) # => ArgumentError (unknown keywords:......1, 2) # => #<struct Point2 x=1, y=2>
Point2.new(x: 1, y: 2) # => #<struct Point2 x=1, y=2>
Point2.new(x: 1) # => #<struct Point2 x=1, y=nil>
Point2.new(y: 2) # => #<struct Point2 x=nil, y=2>
Point2.new(x: 1, y: 2, z: 3) # => ArgumentError (unknown keywords:... -
Data
. [](**kwargs) -> Data (154.0) -
(このメソッドは Data のサブクラスにのみ定義されています) 値オブジェクトを生成して返します。
...@raise ArgumentError 値オブジェクトのメンバの数より多くの引数を渡した場合に発生します。
//emlist[例][ruby]{
Point = Data.define(:x, :y)
p1 = Point.new(1, 2)
p p1.x # => 1
p p1.y # => 2
p2 = Point.new(x: 3, y: 4)
p p2.x # => 3
p p2.y # => 4
//}
ne......# => in `initialize': missing keyword: :y (ArgumentError)
Point.new(1, 2, 3) # => in `new': wrong number of arguments (given 3, expected 0..2) (ArgumentError)
Point.new(x: 1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(x: 1, y: 2, z: 3) # => in `in......itialize': unknown keyword: :z (ArgumentError)
//}
下の例のように、initialize メソッドをオーバーライドすることで new のオプション引数を実現できます。
//emlist[オプション引数を実現する例][ruby]{
Point = Data.define(:x, :y) do
def initialize(x:... -
Data
. [](*args) -> Data (154.0) -
(このメソッドは Data のサブクラスにのみ定義されています) 値オブジェクトを生成して返します。
...@raise ArgumentError 値オブジェクトのメンバの数より多くの引数を渡した場合に発生します。
//emlist[例][ruby]{
Point = Data.define(:x, :y)
p1 = Point.new(1, 2)
p p1.x # => 1
p p1.y # => 2
p2 = Point.new(x: 3, y: 4)
p p2.x # => 3
p p2.y # => 4
//}
ne......# => in `initialize': missing keyword: :y (ArgumentError)
Point.new(1, 2, 3) # => in `new': wrong number of arguments (given 3, expected 0..2) (ArgumentError)
Point.new(x: 1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(x: 1, y: 2, z: 3) # => in `in......itialize': unknown keyword: :z (ArgumentError)
//}
下の例のように、initialize メソッドをオーバーライドすることで new のオプション引数を実現できます。
//emlist[オプション引数を実現する例][ruby]{
Point = Data.define(:x, :y) do
def initialize(x:... -
Data
. new(**kwargs) -> Data (154.0) -
(このメソッドは Data のサブクラスにのみ定義されています) 値オブジェクトを生成して返します。
...@raise ArgumentError 値オブジェクトのメンバの数より多くの引数を渡した場合に発生します。
//emlist[例][ruby]{
Point = Data.define(:x, :y)
p1 = Point.new(1, 2)
p p1.x # => 1
p p1.y # => 2
p2 = Point.new(x: 3, y: 4)
p p2.x # => 3
p p2.y # => 4
//}
ne......# => in `initialize': missing keyword: :y (ArgumentError)
Point.new(1, 2, 3) # => in `new': wrong number of arguments (given 3, expected 0..2) (ArgumentError)
Point.new(x: 1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(x: 1, y: 2, z: 3) # => in `in......itialize': unknown keyword: :z (ArgumentError)
//}
下の例のように、initialize メソッドをオーバーライドすることで new のオプション引数を実現できます。
//emlist[オプション引数を実現する例][ruby]{
Point = Data.define(:x, :y) do
def initialize(x:... -
Data
. new(*args) -> Data (154.0) -
(このメソッドは Data のサブクラスにのみ定義されています) 値オブジェクトを生成して返します。
...@raise ArgumentError 値オブジェクトのメンバの数より多くの引数を渡した場合に発生します。
//emlist[例][ruby]{
Point = Data.define(:x, :y)
p1 = Point.new(1, 2)
p p1.x # => 1
p p1.y # => 2
p2 = Point.new(x: 3, y: 4)
p p2.x # => 3
p p2.y # => 4
//}
ne......# => in `initialize': missing keyword: :y (ArgumentError)
Point.new(1, 2, 3) # => in `new': wrong number of arguments (given 3, expected 0..2) (ArgumentError)
Point.new(x: 1) # => in `initialize': missing keyword: :y (ArgumentError)
Point.new(x: 1, y: 2, z: 3) # => in `in......itialize': unknown keyword: :z (ArgumentError)
//}
下の例のように、initialize メソッドをオーバーライドすることで new のオプション引数を実現できます。
//emlist[オプション引数を実現する例][ruby]{
Point = Data.define(:x, :y) do
def initialize(x:... -
Array
# pack(template) -> String (142.0) -
配列の内容を template で指定された文字列にしたがって、 バイナリとしてパックした文字列を返します。
...ます。
強制的にエンディアンを指定したいときは、
リトルエンディアンなら < を、
ビッグエンディアンなら >
を後ろにつけます。! と組み合わせることも可能です。
まとめると以下のようになります。
: エンディアン非......q: int64_t
Q: uint64_t
//}
: エンディアンの強制指定(バイナリ解析などに適切)
//emlist{
S>: big endian unsigned 16bit(nと同じ)
s>: big endian int16_t
s!>: big endian signed short
l<: little endian int32_t
l!<: little endian signed long
//}
=== 各テンプレ......k("m0") # => "//8="
["\xFF\xFF\xFF"].pack("m0") # => "////"
["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"].pack("m0")
# => "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWg=="
"".unpack("m0") # => [""]
"AA==\n".unpack("m0") # => ArgumentError (invalid base......pacity)が足りなければ、packはメモリを確保します。
//emlist[例][ruby]{
['!'].pack('@1a', buffer: 'abc') # => "a!"
['!'].pack('@5a', buffer: 'abc') # => "abc\u0000\u0000!"
//}
@param template 自身のバイナリとしてパックするためのテンプレートを文字列... -
Array
# pack(template , buffer: String . new) -> String (142.0) -
配列の内容を template で指定された文字列にしたがって、 バイナリとしてパックした文字列を返します。
...pacity)が足りなければ、packはメモリを確保します。
//emlist[例][ruby]{
['!'].pack('@1a', buffer: 'abc') # => "a!"
['!'].pack('@5a', buffer: 'abc') # => "abc\u0000\u0000!"
//}
@param template 自身のバイナリとしてパックするためのテンプレートを文字列......ます。
強制的にエンディアンを指定したいときは、
リトルエンディアンなら < を、
ビッグエンディアンなら >
を後ろにつけます。! と組み合わせることも可能です。
まとめると以下のようになります。
: エンディアン非......k("m0") # => "//8="
["\xFF\xFF\xFF"].pack("m0") # => "////"
["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"].pack("m0")
# => "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWg=="
"".unpack("m0") # => [""]
"AA==\n".unpack("m0") # => ArgumentError (invalid base... -
Data
# with(**kwargs) -> Data (142.0) -
self をコピーしたオブジェクトを返します。
...aise ArgumentError 存在しないメンバを指定した場合に発生します。
//emlist[例][ruby]{
Dog = Data.define(:name, :age)
dog1 = Dog.new("Fred", 5) # => #<data Dog name="Fred", age=5>
dog2 = dog1.with(age: 6) # => #<data Dog name="Fred", age=6>
p dog1 # => #<d......", age=5>
dog3 = dog1.with(type: "Terrier") # => ArgumentError (unknown keyword: :type)
# メンバのオブジェクトはコピーされず、同じオブジェクトを参照する。
dog1.name.upcase!
p dog1 # => #<data Dog name="FRED", age=5>
p dog2 # => #<data Dog name="FRED", age=6>
//}
[... -
Kernel
. # Float(arg) -> Float (142.0) -
引数を浮動小数点数(Float)に変換した結果を返します。
...loat は文字列に対し String#to_f よりも厳密な変換を行います。
@param arg 変換対象のオブジェクトです。
@raise ArgumentError 整数や浮動小数点数と見なせない文字列を引数に指定した場合に発生します。
@raise TypeError nil またはメソ......> 4.0
p Float(4_000) #=> 4000.0
p Float(9.88) #=> 9.88
p Float(Time.gm(1986)) #=> 504921600.0
p Float(Object.new) # can't convert Object into Float (TypeError)
p Float(nil) # can't convert nil into Float (TypeError)
p Float("10") #=> 10.0
p Float("10e2") #=>......#=> 0.01
p Float(".1") #=> 0.1
p Float("0xa") #=> 10.0
p Float("nan") # invalid value for Float(): "nan" (ArgumentError)
p Float("INF") # invalid value for Float(): "INF" (ArgumentError)
p Float("-Inf") # invalid value for Float(): "-Inf" (ArgumentError)
p Fl... -
Kernel
. # Float(arg , exception: true) -> Float | nil (142.0) -
引数を浮動小数点数(Float)に変換した結果を返します。
...n false を指定すると、変換できなかった場合、
例外を発生する代わりに nil を返します。
@raise ArgumentError 整数や浮動小数点数と見なせない文字列を引数に指定した場合に発生します。
@raise TypeError nil またはメソ......> 4.0
p Float(4_000) #=> 4000.0
p Float(9.88) #=> 9.88
p Float(Time.gm(1986)) #=> 504921600.0
p Float(Object.new) # can't convert Object into Float (TypeError)
p Float(nil) # can't convert nil into Float (TypeError)
p Float("10") #=> 10.0
p Float("10e2") #=>......#=> 0.01
p Float(".1") #=> 0.1
p Float("0xa") #=> 10.0
p Float("nan") # invalid value for Float(): "nan" (ArgumentError)
p Float("INF") # invalid value for Float(): "INF" (ArgumentError)
p Float("-Inf") # invalid value for Float(): "-Inf" (ArgumentError)
p Fl... -
Kernel
. # Rational(x , y = 1) -> Rational (142.0) -
引数を有理数(Rational)に変換した結果を返します。
...@raise ArgumentError 変換できないオブジェクトを指定した場合に発生します。
引数 x、y の両方を指定した場合、x/y した Rational オブジェクトを
返します。
//emlist[例][ruby]{
Rational("1/3") # => (1/3)
Rational(1, 3) # => (1/3)......", "0.3") # => (1/3)
Rational(Complex(1,2), 2) # => ((1/2)+(1/1)*i)
//}
ただし、1.8系とは異なり、Rational オブジェクトは常に既約(それ以上
約分できない状態)である事に注意してください。
//emlist[例][ruby]{
Rational(2, 6) # => (1/3)
Rational......(1, 3) * 3 # => (1/1)
//}
引数に文字列を指定する場合、以下のいずれかの形式で指定します。
* "1/3" のような分数の形式
* "0.3" のような10進数の形式
* "0.3E0" のような x.xEn の形式
* 数字をアンダースコアで繋いだ形式
"1.2/... -
Kernel
. # Rational(x , y = 1 , exception: true) -> Rational | nil (142.0) -
引数を有理数(Rational)に変換した結果を返します。
...@raise ArgumentError 変換できないオブジェクトを指定した場合に発生します。
引数 x、y の両方を指定した場合、x/y した Rational オブジェクトを
返します。
//emlist[例][ruby]{
Rational("1/3") # => (1/3)
Rational(1, 3) # => (1/3)......", "0.3") # => (1/3)
Rational(Complex(1,2), 2) # => ((1/2)+(1/1)*i)
//}
ただし、1.8系とは異なり、Rational オブジェクトは常に既約(それ以上
約分できない状態)である事に注意してください。
//emlist[例][ruby]{
Rational(2, 6) # => (1/3)
Rational......(1, 3) * 3 # => (1/1)
//}
引数に文字列を指定する場合、以下のいずれかの形式で指定します。
* "1/3" のような分数の形式
* "0.3" のような10進数の形式
* "0.3E0" のような x.xEn の形式
* 数字をアンダースコアで繋いだ形式
"1.2/... -
String
# unpack(template) -> Array (142.0) -
Array#pack で生成された文字列を テンプレート文字列 template にしたがってアンパックし、 それらの要素を含む配列を返します。
...ます。
強制的にエンディアンを指定したいときは、
リトルエンディアンなら < を、
ビッグエンディアンなら >
を後ろにつけます。! と組み合わせることも可能です。
まとめると以下のようになります。
: エンディアン非......q: int64_t
Q: uint64_t
//}
: エンディアンの強制指定(バイナリ解析などに適切)
//emlist{
S>: big endian unsigned 16bit(nと同じ)
s>: big endian int16_t
s!>: big endian signed short
l<: little endian int32_t
l!<: little endian signed long
//}
=== 各テンプレ......k("m0") # => "//8="
["\xFF\xFF\xFF"].pack("m0") # => "////"
["abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"].pack("m0")
# => "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWg=="
"".unpack("m0") # => [""]
"AA==\n".unpack("m0") # => ArgumentError (invalid base... -
Struct
. new(*args , keyword _ init: nil) -> Class (137.0) -
Struct クラスに新しいサブクラスを作って、それを返します。
...。
//emlist[例][ruby]{
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......ct.new(:x, :y, keyword_init: true) # => Point(keyword_init: true)
Point.new(x: 1, y: 2) # => #<struct Point x=1, y=2>
Point.new(x: 1) # => #<struct Point x=1, y=nil>
Point.new(y: 2) # => #<struct Point x=nil, y=2>
Point.new(z: 3) # ArgumentError (unknown keywords: z)
//}
//emlist[......警告が出る例][ruby]{
Point = Struct.new(:x, :y)
Point.new(x: 1, y: 2) # => #<struct Point x={:x=>1, :y=>2}, y=nil>
# warning: Passing only keyword arguments to Struct#initialize will behave differently from Ruby 3.2. Please use a Hash literal like .new({k: v}) instead...