rbs 3.6.1 → 3.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/comments.yml +2 -2
- data/.github/workflows/dependabot.yml +1 -1
- data/.github/workflows/ruby.yml +34 -10
- data/.github/workflows/windows.yml +20 -3
- data/.gitignore +1 -0
- data/.rubocop.yml +26 -1
- data/CHANGELOG.md +241 -0
- data/Rakefile +54 -4
- data/config.yml +317 -0
- data/core/array.rbs +1756 -1591
- data/core/basic_object.rbs +38 -35
- data/core/comparable.rbs +1 -1
- data/core/complex.rbs +166 -94
- data/core/data.rbs +2 -2
- data/core/dir.rbs +2 -18
- data/core/encoding.rbs +12 -32
- data/core/enumerable.rbs +270 -266
- data/core/enumerator.rbs +14 -4
- data/core/env.rbs +1 -1
- data/core/errno.rbs +33 -16
- data/core/errors.rbs +6 -2
- data/core/exception.rbs +342 -167
- data/core/fiber.rbs +3 -2
- data/core/file.rbs +26 -75
- data/core/float.rbs +125 -72
- data/core/gc.rbs +158 -42
- data/core/hash.rbs +122 -143
- data/core/integer.rbs +79 -50
- data/core/io/buffer.rbs +49 -43
- data/core/io.rbs +108 -151
- data/core/kernel.rbs +341 -209
- data/core/match_data.rbs +76 -2
- data/core/math.rbs +0 -36
- data/core/method.rbs +2 -2
- data/core/module.rbs +32 -27
- data/core/nil_class.rbs +2 -2
- data/core/numeric.rbs +101 -104
- data/core/object.rbs +1 -5
- data/core/object_space/weak_key_map.rbs +3 -4
- data/core/object_space.rbs +3 -3
- data/core/proc.rbs +82 -14
- data/core/process.rbs +110 -58
- data/core/ractor.rbs +57 -4
- data/core/range.rbs +114 -87
- data/core/rational.rbs +0 -2
- data/core/rbs/unnamed/argf.rbs +237 -36
- data/core/rbs/unnamed/env_class.rbs +35 -53
- data/core/rbs/unnamed/random.rbs +1 -2
- data/core/regexp.rbs +10 -56
- data/core/ruby_vm.rbs +88 -9
- data/core/rubygems/config_file.rbs +3 -0
- data/core/rubygems/errors.rbs +3 -6
- data/core/rubygems/platform.rbs +0 -9
- data/core/rubygems/rubygems.rbs +3 -6
- data/core/rubygems/version.rbs +8 -8
- data/core/set.rbs +4 -16
- data/core/string.rbs +271 -264
- data/core/struct.rbs +6 -18
- data/core/symbol.rbs +14 -21
- data/core/thread.rbs +32 -35
- data/core/time.rbs +131 -50
- data/core/trace_point.rbs +124 -113
- data/core/true_class.rbs +0 -1
- data/core/unbound_method.rbs +1 -1
- data/core/warning.rbs +9 -2
- data/docs/architecture.md +1 -1
- data/docs/syntax.md +17 -10
- data/ext/rbs_extension/extconf.rb +11 -0
- data/ext/rbs_extension/location.c +61 -29
- data/ext/rbs_extension/location.h +4 -3
- data/ext/rbs_extension/main.c +23 -1
- data/ext/rbs_extension/parser.c +506 -517
- data/ext/rbs_extension/parserstate.c +109 -30
- data/ext/rbs_extension/parserstate.h +6 -4
- data/ext/rbs_extension/rbs_extension.h +1 -10
- data/{ext/rbs_extension → include/rbs}/constants.h +21 -19
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs/util/rbs_constant_pool.h +219 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/annotate/annotations.rb +3 -3
- data/lib/rbs/annotate/rdoc_source.rb +2 -2
- data/lib/rbs/ast/declarations.rb +9 -4
- data/lib/rbs/ast/directives.rb +10 -0
- data/lib/rbs/ast/members.rb +2 -0
- data/lib/rbs/ast/type_param.rb +2 -12
- data/lib/rbs/cli/diff.rb +3 -3
- data/lib/rbs/cli/validate.rb +2 -1
- data/lib/rbs/cli.rb +16 -16
- data/lib/rbs/collection/config/lockfile_generator.rb +58 -8
- data/lib/rbs/collection/config.rb +5 -3
- data/lib/rbs/collection/sources/rubygems.rb +1 -1
- data/lib/rbs/collection.rb +1 -0
- data/lib/rbs/definition.rb +51 -34
- data/lib/rbs/definition_builder/ancestor_builder.rb +5 -3
- data/lib/rbs/definition_builder.rb +83 -24
- data/lib/rbs/environment.rb +33 -18
- data/lib/rbs/environment_loader.rb +6 -1
- data/lib/rbs/errors.rb +24 -0
- data/lib/rbs/locator.rb +2 -0
- data/lib/rbs/method_type.rb +2 -0
- data/lib/rbs/namespace.rb +1 -0
- data/lib/rbs/parser_aux.rb +40 -3
- data/lib/rbs/prototype/rb.rb +20 -12
- data/lib/rbs/prototype/rbi.rb +11 -6
- data/lib/rbs/prototype/runtime/value_object_generator.rb +7 -5
- data/lib/rbs/prototype/runtime.rb +7 -5
- data/lib/rbs/subtractor.rb +3 -3
- data/lib/rbs/test/hook.rb +47 -42
- data/lib/rbs/test/type_check.rb +7 -5
- data/lib/rbs/type_name.rb +14 -9
- data/lib/rbs/types.rb +63 -14
- data/lib/rbs/unit_test/spy.rb +4 -2
- data/lib/rbs/unit_test/type_assertions.rb +19 -13
- data/lib/rbs/unit_test/with_aliases.rb +3 -1
- data/lib/rbs/validator.rb +7 -1
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs/writer.rb +10 -5
- data/lib/rbs.rb +1 -0
- data/lib/rdoc_plugin/parser.rb +2 -2
- data/rbs.gemspec +6 -2
- data/sig/ancestor_graph.rbs +5 -5
- data/sig/annotate/rdoc_source.rbs +2 -0
- data/sig/cli.rbs +2 -0
- data/sig/collection/config/lockfile_generator.rbs +9 -1
- data/sig/declarations.rbs +10 -3
- data/sig/definition.rbs +80 -12
- data/sig/definition_builder.rbs +18 -4
- data/sig/directives.rbs +17 -1
- data/sig/environment.rbs +3 -1
- data/sig/errors.rbs +19 -0
- data/sig/namespace.rbs +2 -3
- data/sig/parser.rbs +5 -1
- data/sig/prototype/rb.rbs +1 -1
- data/sig/resolver/constant_resolver.rbs +2 -2
- data/sig/resolver/context.rbs +1 -1
- data/sig/subtractor.rbs +1 -1
- data/sig/test/type_check.rbs +2 -2
- data/sig/type_alias_dependency.rbs +2 -2
- data/sig/type_alias_regularity.rbs +6 -6
- data/sig/type_param.rbs +4 -4
- data/sig/typename.rbs +8 -5
- data/sig/types.rbs +1 -1
- data/sig/unit_test/spy.rbs +2 -0
- data/sig/unit_test/type_assertions.rbs +2 -0
- data/sig/use_map.rbs +1 -1
- data/sig/validator.rbs +6 -2
- data/sig/vendorer.rbs +1 -1
- data/sig/writer.rbs +1 -1
- data/{ext/rbs_extension → src}/constants.c +35 -36
- data/src/ruby_objs.c +799 -0
- data/src/util/rbs_constant_pool.c +342 -0
- data/stdlib/base64/0/base64.rbs +0 -9
- data/stdlib/benchmark/0/benchmark.rbs +11 -2
- data/stdlib/bigdecimal/0/big_decimal.rbs +26 -182
- data/stdlib/cgi/0/core.rbs +60 -3
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/coverage/0/coverage.rbs +0 -3
- data/stdlib/csv/0/csv.rbs +18 -58
- data/stdlib/csv/0/manifest.yaml +1 -0
- data/stdlib/date/0/date.rbs +27 -42
- data/stdlib/did_you_mean/0/did_you_mean.rbs +1 -6
- data/stdlib/digest/0/digest.rbs +25 -2
- data/stdlib/erb/0/erb.rbs +0 -1
- data/stdlib/etc/0/etc.rbs +51 -34
- data/stdlib/fileutils/0/fileutils.rbs +3 -44
- data/stdlib/io-console/0/io-console.rbs +69 -15
- data/stdlib/ipaddr/0/ipaddr.rbs +16 -4
- data/stdlib/json/0/json.rbs +107 -120
- data/stdlib/logger/0/log_device.rbs +1 -1
- data/stdlib/logger/0/logger.rbs +3 -18
- data/stdlib/minitest/0/kernel.rbs +2 -2
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +4 -1
- data/stdlib/minitest/0/minitest/assertion.rbs +1 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +58 -13
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +7 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +8 -8
- data/stdlib/minitest/0/minitest/benchmark.rbs +17 -16
- data/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/stdlib/minitest/0/minitest/mock.rbs +9 -5
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +4 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +0 -1
- data/stdlib/minitest/0/minitest/pride_io.rbs +8 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +2 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +1 -1
- data/stdlib/minitest/0/minitest/reportable.rbs +2 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +33 -1
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +1 -1
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +10 -6
- data/stdlib/minitest/0/minitest/spec.rbs +1 -1
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +0 -7
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +1 -1
- data/stdlib/minitest/0/minitest/test.rbs +7 -14
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +2 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit.rbs +1 -2
- data/stdlib/minitest/0/minitest.rbs +41 -892
- data/stdlib/monitor/0/monitor.rbs +13 -4
- data/stdlib/net-http/0/net-http.rbs +42 -109
- data/stdlib/nkf/0/nkf.rbs +30 -0
- data/stdlib/objspace/0/objspace.rbs +1 -2
- data/stdlib/observable/0/observable.rbs +1 -1
- data/stdlib/open-uri/0/manifest.yaml +1 -0
- data/stdlib/open-uri/0/open-uri.rbs +52 -0
- data/stdlib/open3/0/open3.rbs +0 -8
- data/stdlib/openssl/0/manifest.yaml +1 -0
- data/stdlib/openssl/0/openssl.rbs +235 -143
- data/stdlib/optparse/0/optparse.rbs +58 -18
- data/stdlib/pathname/0/pathname.rbs +2 -8
- data/stdlib/pp/0/pp.rbs +3 -1
- data/stdlib/prettyprint/0/prettyprint.rbs +0 -4
- data/stdlib/pstore/0/pstore.rbs +0 -6
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/psych.rbs +15 -4
- data/stdlib/pty/0/pty.rbs +46 -4
- data/stdlib/rdoc/0/code_object.rbs +0 -4
- data/stdlib/rdoc/0/markup.rbs +10 -12
- data/stdlib/rdoc/0/rdoc.rbs +13 -8
- data/stdlib/resolv/0/resolv.rbs +21 -12
- data/stdlib/ripper/0/ripper.rbs +0 -2
- data/stdlib/securerandom/0/securerandom.rbs +7 -2
- data/stdlib/shellwords/0/shellwords.rbs +11 -12
- data/stdlib/singleton/0/singleton.rbs +0 -1
- data/stdlib/socket/0/addrinfo.rbs +1 -2
- data/stdlib/socket/0/basic_socket.rbs +0 -5
- data/stdlib/socket/0/socket.rbs +32 -27
- data/stdlib/socket/0/tcp_server.rbs +0 -3
- data/stdlib/socket/0/tcp_socket.rbs +36 -3
- data/stdlib/socket/0/udp_socket.rbs +0 -1
- data/stdlib/socket/0/unix_server.rbs +0 -3
- data/stdlib/socket/0/unix_socket.rbs +4 -2
- data/{core/string_io.rbs → stdlib/stringio/0/stringio.rbs} +1 -1
- data/stdlib/strscan/0/string_scanner.rbs +1265 -422
- data/stdlib/tempfile/0/tempfile.rbs +135 -28
- data/stdlib/time/0/time.rbs +48 -35
- data/stdlib/timeout/0/timeout.rbs +11 -8
- data/stdlib/tmpdir/0/tmpdir.rbs +10 -3
- data/stdlib/tsort/0/tsort.rbs +0 -4
- data/stdlib/uri/0/common.rbs +28 -30
- data/stdlib/uri/0/ftp.rbs +1 -1
- data/stdlib/uri/0/generic.rbs +22 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/rfc2396_parser.rbs +3 -0
- data/stdlib/zlib/0/buf_error.rbs +1 -70
- data/stdlib/zlib/0/data_error.rbs +1 -70
- data/stdlib/zlib/0/deflate.rbs +8 -72
- data/stdlib/zlib/0/error.rbs +1 -70
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/length_error.rbs +2 -105
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +2 -105
- data/stdlib/zlib/0/gzip_file.rbs +1 -71
- data/stdlib/zlib/0/gzip_reader.rbs +3 -74
- data/stdlib/zlib/0/gzip_writer.rbs +1 -70
- data/stdlib/zlib/0/inflate.rbs +4 -71
- data/stdlib/zlib/0/mem_error.rbs +1 -70
- data/stdlib/zlib/0/need_dict.rbs +1 -70
- data/stdlib/zlib/0/stream_end.rbs +1 -70
- data/stdlib/zlib/0/stream_error.rbs +1 -70
- data/stdlib/zlib/0/version_error.rbs +1 -70
- data/stdlib/zlib/0/zlib.rbs +0 -2
- data/stdlib/zlib/0/zstream.rbs +4 -72
- metadata +17 -13
- data/ext/rbs_extension/ruby_objs.c +0 -602
- data/ext/rbs_extension/ruby_objs.h +0 -51
- data/stdlib/minitest/0/manifest.yaml +0 -2
data/core/basic_object.rbs
CHANGED
@@ -1,49 +1,44 @@
|
|
1
1
|
# <!-- rdoc-file=object.c -->
|
2
|
-
# BasicObject is the parent class of all classes in Ruby.
|
3
|
-
#
|
2
|
+
# `BasicObject` is the parent class of all classes in Ruby. In particular,
|
3
|
+
# `BasicObject` is the parent class of class Object, which is itself the default
|
4
|
+
# parent class of every Ruby class:
|
4
5
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
6
|
+
# class Foo; end
|
7
|
+
# Foo.superclass # => Object
|
8
|
+
# Object.superclass # => BasicObject
|
8
9
|
#
|
9
|
-
#
|
10
|
-
# of BasicObject should be created instead of directly modifying BasicObject:
|
10
|
+
# `BasicObject` is the only class that has no parent:
|
11
11
|
#
|
12
|
-
#
|
13
|
-
# end
|
12
|
+
# BasicObject.superclass # => nil
|
14
13
|
#
|
15
|
-
# BasicObject
|
16
|
-
#
|
17
|
-
# be found without using a full class path.
|
14
|
+
# Class `BasicObject` can be used to create an object hierarchy (e.g., class
|
15
|
+
# Delegator) that is independent of Ruby's object hierarchy. Such objects:
|
18
16
|
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
17
|
+
# * Do not have namespace "pollution" from the many methods provided in class
|
18
|
+
# Object and its included module Kernel.
|
19
|
+
# * Do not have definitions of common classes, and so references to such
|
20
|
+
# common classes must be fully qualified (`::String`, not `String`).
|
23
21
|
#
|
24
|
-
#
|
25
|
-
#
|
22
|
+
# A variety of strategies can be used to provide useful portions of the Standard
|
23
|
+
# Library in subclasses of `BasicObject`:
|
26
24
|
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
25
|
+
# * The immediate subclass could `include Kernel`, which would define methods
|
26
|
+
# such as `puts`, `exit`, etc.
|
27
|
+
# * A custom Kernel-like module could be created and included.
|
28
|
+
# * Delegation can be used via #method_missing:
|
31
29
|
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
# end
|
35
|
-
# end
|
30
|
+
# class MyObjectSystem < BasicObject
|
31
|
+
# DELEGATE = [:puts, :p]
|
36
32
|
#
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
33
|
+
# def method_missing(name, *args, &block)
|
34
|
+
# return super unless DELEGATE.include? name
|
35
|
+
# ::Kernel.send(name, *args, &block)
|
36
|
+
# end
|
41
37
|
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
#
|
45
|
-
#
|
46
|
-
# end
|
38
|
+
# def respond_to_missing?(name, include_private = false)
|
39
|
+
# DELEGATE.include?(name)
|
40
|
+
# end
|
41
|
+
# end
|
47
42
|
#
|
48
43
|
# ### What's Here
|
49
44
|
#
|
@@ -60,6 +55,14 @@
|
|
60
55
|
# `self`.
|
61
56
|
# * #instance_exec: Executes the given block in the context of `self`, passing
|
62
57
|
# the given arguments.
|
58
|
+
# * #method_missing: Called when `self` is called with a method it does not
|
59
|
+
# define.
|
60
|
+
# * #singleton_method_added: Called when a singleton method is added to
|
61
|
+
# `self`.
|
62
|
+
# * #singleton_method_removed: Called when a singleton method is removed from
|
63
|
+
# `self`.
|
64
|
+
# * #singleton_method_undefined: Called when a singleton method is undefined
|
65
|
+
# in `self`.
|
63
66
|
#
|
64
67
|
class BasicObject
|
65
68
|
# <!--
|
data/core/comparable.rbs
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
#
|
39
39
|
# ## What's Here
|
40
40
|
#
|
41
|
-
# Module Comparable provides these methods, all of which use method
|
41
|
+
# Module Comparable provides these methods, all of which use method `#<=>`:
|
42
42
|
#
|
43
43
|
# * #<: Returns whether `self` is less than the given object.
|
44
44
|
# * #<=: Returns whether `self` is less than or equal to the given object.
|
data/core/complex.rbs
CHANGED
@@ -6,35 +6,33 @@
|
|
6
6
|
#
|
7
7
|
# The rectangular coordinates of a complex number are called the *real* and
|
8
8
|
# *imaginary* parts; see [Complex number
|
9
|
-
# definition](https://en.wikipedia.org/wiki/Complex_number#
|
9
|
+
# definition](https://en.wikipedia.org/wiki/Complex_number#Definition_and_basic_
|
10
|
+
# operations).
|
10
11
|
#
|
11
12
|
# You can create a Complex object from rectangular coordinates with:
|
12
13
|
#
|
13
|
-
# * A [complex literal](rdoc-ref:
|
14
|
+
# * A [complex literal](rdoc-ref:syntax/literals.rdoc@Complex+Literals).
|
14
15
|
# * Method Complex.rect.
|
15
16
|
# * Method Kernel#Complex, either with numeric arguments or with certain
|
16
17
|
# string arguments.
|
17
18
|
# * Method String#to_c, for certain strings.
|
18
19
|
#
|
19
|
-
#
|
20
20
|
# Note that each of the stored parts may be a an instance one of the classes
|
21
21
|
# Complex, Float, Integer, or Rational; they may be retrieved:
|
22
22
|
#
|
23
23
|
# * Separately, with methods Complex#real and Complex#imaginary.
|
24
24
|
# * Together, with method Complex#rect.
|
25
25
|
#
|
26
|
-
#
|
27
26
|
# The corresponding (computed) polar values may be retrieved:
|
28
27
|
#
|
29
28
|
# * Separately, with methods Complex#abs and Complex#arg.
|
30
29
|
# * Together, with method Complex#polar.
|
31
30
|
#
|
32
|
-
#
|
33
31
|
# ## Polar Coordinates
|
34
32
|
#
|
35
33
|
# The polar coordinates of a complex number are called the *absolute* and
|
36
34
|
# *argument* parts; see [Complex polar
|
37
|
-
# plane](https://en.wikipedia.org/wiki/Complex_number#
|
35
|
+
# plane](https://en.wikipedia.org/wiki/Complex_number#Polar_form).
|
38
36
|
#
|
39
37
|
# In this class, the argument part in expressed
|
40
38
|
# [radians](https://en.wikipedia.org/wiki/Radian) (not
|
@@ -46,19 +44,94 @@
|
|
46
44
|
# * Method Kernel#Complex, with certain string arguments.
|
47
45
|
# * Method String#to_c, for certain strings.
|
48
46
|
#
|
49
|
-
#
|
50
47
|
# Note that each of the stored parts may be a an instance one of the classes
|
51
48
|
# Complex, Float, Integer, or Rational; they may be retrieved:
|
52
49
|
#
|
53
50
|
# * Separately, with methods Complex#abs and Complex#arg.
|
54
51
|
# * Together, with method Complex#polar.
|
55
52
|
#
|
56
|
-
#
|
57
53
|
# The corresponding (computed) rectangular values may be retrieved:
|
58
54
|
#
|
59
55
|
# * Separately, with methods Complex#real and Complex#imag.
|
60
56
|
# * Together, with method Complex#rect.
|
61
57
|
#
|
58
|
+
# ## What's Here
|
59
|
+
#
|
60
|
+
# First, what's elsewhere:
|
61
|
+
#
|
62
|
+
# * Class Complex inherits (directly or indirectly) from classes
|
63
|
+
# [Numeric](rdoc-ref:Numeric@What-27s+Here) and
|
64
|
+
# [Object](rdoc-ref:Object@What-27s+Here).
|
65
|
+
# * Includes (indirectly) module
|
66
|
+
# [Comparable](rdoc-ref:Comparable@What-27s+Here).
|
67
|
+
#
|
68
|
+
# Here, class Complex has methods for:
|
69
|
+
#
|
70
|
+
# ### Creating Complex Objects
|
71
|
+
#
|
72
|
+
# * ::polar: Returns a new Complex object based on given polar coordinates.
|
73
|
+
# * ::rect (and its alias ::rectangular): Returns a new Complex object based
|
74
|
+
# on given rectangular coordinates.
|
75
|
+
#
|
76
|
+
# ### Querying
|
77
|
+
#
|
78
|
+
# * #abs (and its alias #magnitude): Returns the absolute value for `self`.
|
79
|
+
# * #arg (and its aliases #angle and #phase): Returns the argument (angle) for
|
80
|
+
# `self` in radians.
|
81
|
+
# * #denominator: Returns the denominator of `self`.
|
82
|
+
# * #finite?: Returns whether both `self.real` and `self.image` are finite.
|
83
|
+
# * #hash: Returns the integer hash value for `self`.
|
84
|
+
# * #imag (and its alias #imaginary): Returns the imaginary value for `self`.
|
85
|
+
# * #infinite?: Returns whether `self.real` or `self.image` is infinite.
|
86
|
+
# * #numerator: Returns the numerator of `self`.
|
87
|
+
# * #polar: Returns the array `[self.abs, self.arg]`.
|
88
|
+
# * #inspect: Returns a string representation of `self`.
|
89
|
+
# * #real: Returns the real value for `self`.
|
90
|
+
# * #real?: Returns `false`; for compatibility with Numeric#real?.
|
91
|
+
# * #rect (and its alias #rectangular): Returns the array `[self.real,
|
92
|
+
# self.imag]`.
|
93
|
+
#
|
94
|
+
# ### Comparing
|
95
|
+
#
|
96
|
+
# * #<=>: Returns whether `self` is less than, equal to, or greater than the
|
97
|
+
# given argument.
|
98
|
+
# * #==: Returns whether `self` is equal to the given argument.
|
99
|
+
#
|
100
|
+
# ### Converting
|
101
|
+
#
|
102
|
+
# * #rationalize: Returns a Rational object whose value is exactly or
|
103
|
+
# approximately equivalent to that of `self.real`.
|
104
|
+
# * #to_c: Returns `self`.
|
105
|
+
# * #to_d: Returns the value as a BigDecimal object.
|
106
|
+
# * #to_f: Returns the value of `self.real` as a Float, if possible.
|
107
|
+
# * #to_i: Returns the value of `self.real` as an Integer, if possible.
|
108
|
+
# * #to_r: Returns the value of `self.real` as a Rational, if possible.
|
109
|
+
# * #to_s: Returns a string representation of `self`.
|
110
|
+
#
|
111
|
+
# ### Performing Complex Arithmetic
|
112
|
+
#
|
113
|
+
# * #*: Returns the product of `self` and the given numeric.
|
114
|
+
# * #**: Returns `self` raised to power of the given numeric.
|
115
|
+
# * #+: Returns the sum of `self` and the given numeric.
|
116
|
+
# * #-: Returns the difference of `self` and the given numeric.
|
117
|
+
# * #-@: Returns the negation of `self`.
|
118
|
+
# * #/: Returns the quotient of `self` and the given numeric.
|
119
|
+
# * #abs2: Returns square of the absolute value (magnitude) for `self`.
|
120
|
+
# * #conj (and its alias #conjugate): Returns the conjugate of `self`.
|
121
|
+
# * #fdiv: Returns `Complex.rect(self.real/numeric, self.imag/numeric)`.
|
122
|
+
#
|
123
|
+
# ### Working with JSON
|
124
|
+
#
|
125
|
+
# * ::json_create: Returns a new Complex object, deserialized from the given
|
126
|
+
# serialized hash.
|
127
|
+
# * #as_json: Returns a serialized hash constructed from `self`.
|
128
|
+
# * #to_json: Returns a JSON string representing `self`.
|
129
|
+
#
|
130
|
+
# These methods are provided by the [JSON gem](https://github.com/ruby/json). To
|
131
|
+
# make these methods available:
|
132
|
+
#
|
133
|
+
# require 'json/add/complex'
|
134
|
+
#
|
62
135
|
class Complex < Numeric
|
63
136
|
# <!--
|
64
137
|
# rdoc-file=complex.c
|
@@ -115,11 +188,11 @@ class Complex < Numeric
|
|
115
188
|
# -->
|
116
189
|
# Returns the product of `self` and `numeric`:
|
117
190
|
#
|
118
|
-
# Complex(2, 3) * Complex(2, 3) # => (-5+12i)
|
119
|
-
# Complex(900) * Complex(1) # => (900+0i)
|
120
|
-
# Complex(-2, 9) * Complex(-9, 2) # => (0-85i)
|
121
|
-
# Complex(9, 8) * 4
|
122
|
-
# Complex(20, 9) * 9.8
|
191
|
+
# Complex.rect(2, 3) * Complex.rect(2, 3) # => (-5+12i)
|
192
|
+
# Complex.rect(900) * Complex.rect(1) # => (900+0i)
|
193
|
+
# Complex.rect(-2, 9) * Complex.rect(-9, 2) # => (0-85i)
|
194
|
+
# Complex.rect(9, 8) * 4 # => (36+32i)
|
195
|
+
# Complex.rect(20, 9) * 9.8 # => (196.0+88.2i)
|
123
196
|
#
|
124
197
|
def *: (Numeric) -> Complex
|
125
198
|
|
@@ -129,8 +202,8 @@ class Complex < Numeric
|
|
129
202
|
# -->
|
130
203
|
# Returns `self` raised to power `numeric`:
|
131
204
|
#
|
132
|
-
# Complex(
|
133
|
-
# Complex(-8) ** Rational(1, 3) # => (1.0000000000000002+1.7320508075688772i)
|
205
|
+
# Complex.rect(0, 1) ** 2 # => (-1+0i)
|
206
|
+
# Complex.rect(-8) ** Rational(1, 3) # => (1.0000000000000002+1.7320508075688772i)
|
134
207
|
#
|
135
208
|
def **: (Numeric) -> Complex
|
136
209
|
|
@@ -140,11 +213,11 @@ class Complex < Numeric
|
|
140
213
|
# -->
|
141
214
|
# Returns the sum of `self` and `numeric`:
|
142
215
|
#
|
143
|
-
# Complex(2, 3) + Complex(2, 3) # => (4+6i)
|
144
|
-
# Complex(900) + Complex(1) # => (901+0i)
|
145
|
-
# Complex(-2, 9) + Complex(-9, 2) # => (-11+11i)
|
146
|
-
# Complex(9, 8) + 4
|
147
|
-
# Complex(20, 9) + 9.8
|
216
|
+
# Complex.rect(2, 3) + Complex.rect(2, 3) # => (4+6i)
|
217
|
+
# Complex.rect(900) + Complex.rect(1) # => (901+0i)
|
218
|
+
# Complex.rect(-2, 9) + Complex.rect(-9, 2) # => (-11+11i)
|
219
|
+
# Complex.rect(9, 8) + 4 # => (13+8i)
|
220
|
+
# Complex.rect(20, 9) + 9.8 # => (29.8+9i)
|
148
221
|
#
|
149
222
|
def +: (Numeric) -> Complex
|
150
223
|
|
@@ -156,11 +229,11 @@ class Complex < Numeric
|
|
156
229
|
# -->
|
157
230
|
# Returns the difference of `self` and `numeric`:
|
158
231
|
#
|
159
|
-
# Complex(2, 3) - Complex(2, 3) # => (0+0i)
|
160
|
-
# Complex(900) - Complex(1) # => (899+0i)
|
161
|
-
# Complex(-2, 9) - Complex(-9, 2) # => (7+7i)
|
162
|
-
# Complex(9, 8) - 4
|
163
|
-
# Complex(20, 9) - 9.8
|
232
|
+
# Complex.rect(2, 3) - Complex.rect(2, 3) # => (0+0i)
|
233
|
+
# Complex.rect(900) - Complex.rect(1) # => (899+0i)
|
234
|
+
# Complex.rect(-2, 9) - Complex.rect(-9, 2) # => (7+7i)
|
235
|
+
# Complex.rect(9, 8) - 4 # => (5+8i)
|
236
|
+
# Complex.rect(20, 9) - 9.8 # => (10.2+9i)
|
164
237
|
#
|
165
238
|
def -: (Numeric) -> Complex
|
166
239
|
|
@@ -170,8 +243,8 @@ class Complex < Numeric
|
|
170
243
|
# -->
|
171
244
|
# Returns the negation of `self`, which is the negation of each of its parts:
|
172
245
|
#
|
173
|
-
# -Complex(1, 2) # => (-1-2i)
|
174
|
-
# -Complex(-1, -2) # => (1+2i)
|
246
|
+
# -Complex.rect(1, 2) # => (-1-2i)
|
247
|
+
# -Complex.rect(-1, -2) # => (1+2i)
|
175
248
|
#
|
176
249
|
def -@: () -> Complex
|
177
250
|
|
@@ -181,11 +254,11 @@ class Complex < Numeric
|
|
181
254
|
# -->
|
182
255
|
# Returns the quotient of `self` and `numeric`:
|
183
256
|
#
|
184
|
-
# Complex(2, 3) / Complex(2, 3) # => (
|
185
|
-
# Complex(900) / Complex(1) # => (
|
186
|
-
# Complex(-2, 9) / Complex(-9, 2) # => ((36/85)-(77/85)*i)
|
187
|
-
# Complex(9, 8) / 4
|
188
|
-
# Complex(20, 9) / 9.8
|
257
|
+
# Complex.rect(2, 3) / Complex.rect(2, 3) # => (1+0i)
|
258
|
+
# Complex.rect(900) / Complex.rect(1) # => (900+0i)
|
259
|
+
# Complex.rect(-2, 9) / Complex.rect(-9, 2) # => ((36/85)-(77/85)*i)
|
260
|
+
# Complex.rect(9, 8) / 4 # => ((9/4)+2i)
|
261
|
+
# Complex.rect(20, 9) / 9.8 # => (2.0408163265306123+0.9183673469387754i)
|
189
262
|
#
|
190
263
|
def /: (Numeric) -> Complex
|
191
264
|
|
@@ -205,18 +278,16 @@ class Complex < Numeric
|
|
205
278
|
# * `object.imag == 0`. # Always true if object is numeric but not
|
206
279
|
# complex.
|
207
280
|
#
|
208
|
-
#
|
209
281
|
# * `nil` otherwise.
|
210
282
|
#
|
211
|
-
#
|
212
283
|
# Examples:
|
213
284
|
#
|
214
|
-
# Complex(2) <=> 3
|
215
|
-
# Complex(2) <=> 2
|
216
|
-
# Complex(2) <=> 1
|
217
|
-
# Complex(2, 1) <=> 1
|
218
|
-
# Complex(1) <=> Complex(1, 1) # => nil # object.imag not zero.
|
219
|
-
# Complex(1) <=> 'Foo'
|
285
|
+
# Complex.rect(2) <=> 3 # => -1
|
286
|
+
# Complex.rect(2) <=> 2 # => 0
|
287
|
+
# Complex.rect(2) <=> 1 # => 1
|
288
|
+
# Complex.rect(2, 1) <=> 1 # => nil # self.imag not zero.
|
289
|
+
# Complex.rect(1) <=> Complex.rect(1, 1) # => nil # object.imag not zero.
|
290
|
+
# Complex.rect(1) <=> 'Foo' # => nil # object.imag not defined.
|
220
291
|
#
|
221
292
|
def <=>: (untyped) -> Integer?
|
222
293
|
|
@@ -226,7 +297,7 @@ class Complex < Numeric
|
|
226
297
|
# -->
|
227
298
|
# Returns `true` if `self.real == object.real` and `self.imag == object.imag`:
|
228
299
|
#
|
229
|
-
# Complex(2, 3) == Complex(2.0, 3.0)
|
300
|
+
# Complex.rect(2, 3) == Complex.rect(2.0, 3.0) # => true
|
230
301
|
#
|
231
302
|
def ==: (untyped) -> bool
|
232
303
|
|
@@ -348,9 +419,9 @@ class Complex < Numeric
|
|
348
419
|
# rdoc-file=complex.c
|
349
420
|
# - fdiv(numeric) -> new_complex
|
350
421
|
# -->
|
351
|
-
# Returns `Complex(self.real/numeric, self.imag/numeric)`:
|
422
|
+
# Returns `Complex.rect(self.real/numeric, self.imag/numeric)`:
|
352
423
|
#
|
353
|
-
# Complex(11, 22).fdiv(3) # => (3.6666666666666665+7.333333333333333i)
|
424
|
+
# Complex.rect(11, 22).fdiv(3) # => (3.6666666666666665+7.333333333333333i)
|
354
425
|
#
|
355
426
|
def fdiv: (Numeric) -> Complex
|
356
427
|
|
@@ -361,8 +432,8 @@ class Complex < Numeric
|
|
361
432
|
# Returns `true` if both `self.real.finite?` and `self.imag.finite?` are true,
|
362
433
|
# `false` otherwise:
|
363
434
|
#
|
364
|
-
# Complex(1, 1).finite? # => true
|
365
|
-
# Complex(Float::INFINITY, 0).finite? # => false
|
435
|
+
# Complex.rect(1, 1).finite? # => true
|
436
|
+
# Complex.rect(Float::INFINITY, 0).finite? # => false
|
366
437
|
#
|
367
438
|
# Related: Numeric#finite?, Float#finite?.
|
368
439
|
#
|
@@ -379,7 +450,7 @@ class Complex < Numeric
|
|
379
450
|
# Two Complex objects created from the same values will have the same hash value
|
380
451
|
# (and will compare using #eql?):
|
381
452
|
#
|
382
|
-
# Complex(1, 2).hash == Complex(1, 2).hash # => true
|
453
|
+
# Complex.rect(1, 2).hash == Complex.rect(1, 2).hash # => true
|
383
454
|
#
|
384
455
|
def hash: () -> Integer
|
385
456
|
|
@@ -388,8 +459,8 @@ class Complex < Numeric
|
|
388
459
|
# <!-- rdoc-file=complex.c -->
|
389
460
|
# Returns the imaginary value for `self`:
|
390
461
|
#
|
391
|
-
# Complex(7).
|
392
|
-
# Complex(9, -4).
|
462
|
+
# Complex.rect(7).imag # => 0
|
463
|
+
# Complex.rect(9, -4).imag # => -4
|
393
464
|
#
|
394
465
|
# If `self` was created with [polar
|
395
466
|
# coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
|
@@ -405,8 +476,8 @@ class Complex < Numeric
|
|
405
476
|
# -->
|
406
477
|
# Returns the imaginary value for `self`:
|
407
478
|
#
|
408
|
-
# Complex(7).
|
409
|
-
# Complex(9, -4).
|
479
|
+
# Complex.rect(7).imag # => 0
|
480
|
+
# Complex.rect(9, -4).imag # => -4
|
410
481
|
#
|
411
482
|
# If `self` was created with [polar
|
412
483
|
# coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
|
@@ -423,8 +494,8 @@ class Complex < Numeric
|
|
423
494
|
# Returns `1` if either `self.real.infinite?` or `self.imag.infinite?` is true,
|
424
495
|
# `nil` otherwise:
|
425
496
|
#
|
426
|
-
# Complex(Float::INFINITY, 0).infinite? # => 1
|
427
|
-
# Complex(1, 1).infinite? # => nil
|
497
|
+
# Complex.rect(Float::INFINITY, 0).infinite? # => 1
|
498
|
+
# Complex.rect(1, 1).infinite? # => nil
|
428
499
|
#
|
429
500
|
# Related: Numeric#infinite?, Float#infinite?.
|
430
501
|
#
|
@@ -436,11 +507,11 @@ class Complex < Numeric
|
|
436
507
|
# -->
|
437
508
|
# Returns a string representation of `self`:
|
438
509
|
#
|
439
|
-
# Complex(2).inspect # => "(2+0i)"
|
440
|
-
# Complex(
|
441
|
-
# Complex(
|
442
|
-
# Complex(0, Float::INFINITY).inspect # => "(0+Infinity*i)"
|
443
|
-
# Complex(Float::NAN, Float::NAN).inspect # => "(NaN+NaN*i)"
|
510
|
+
# Complex.rect(2).inspect # => "(2+0i)"
|
511
|
+
# Complex.rect(-8, 6).inspect # => "(-8+6i)"
|
512
|
+
# Complex.rect(0, Rational(1, 2)).inspect # => "(0+(1/2)*i)"
|
513
|
+
# Complex.rect(0, Float::INFINITY).inspect # => "(0+Infinity*i)"
|
514
|
+
# Complex.rect(Float::NAN, Float::NAN).inspect # => "(NaN+NaN*i)"
|
444
515
|
#
|
445
516
|
def inspect: () -> String
|
446
517
|
|
@@ -475,13 +546,13 @@ class Complex < Numeric
|
|
475
546
|
# denominator](https://en.wikipedia.org/wiki/Lowest_common_denominator) of the
|
476
547
|
# two:
|
477
548
|
#
|
478
|
-
# c = Complex(Rational(2, 3), Rational(3, 4)) # => ((2/3)+(3/4)*i)
|
479
|
-
# c.numerator
|
549
|
+
# c = Complex.rect(Rational(2, 3), Rational(3, 4)) # => ((2/3)+(3/4)*i)
|
550
|
+
# c.numerator # => (8+9i)
|
480
551
|
#
|
481
552
|
# In this example, the lowest common denominator of the two parts is 12; the two
|
482
553
|
# converted parts may be thought of as Rational(8, 12) and Rational(9, 12),
|
483
554
|
# whose numerators, respectively, are 8 and 9; so the returned value of
|
484
|
-
# `c.numerator` is `Complex(8, 9)`.
|
555
|
+
# `c.numerator` is `Complex.rect(8, 9)`.
|
485
556
|
#
|
486
557
|
# Related: Complex#denominator.
|
487
558
|
#
|
@@ -527,11 +598,11 @@ class Complex < Numeric
|
|
527
598
|
# -->
|
528
599
|
# Returns the quotient of `self` and `numeric`:
|
529
600
|
#
|
530
|
-
# Complex(2, 3) / Complex(2, 3) # => (
|
531
|
-
# Complex(900) / Complex(1) # => (
|
532
|
-
# Complex(-2, 9) / Complex(-9, 2) # => ((36/85)-(77/85)*i)
|
533
|
-
# Complex(9, 8) / 4
|
534
|
-
# Complex(20, 9) / 9.8
|
601
|
+
# Complex.rect(2, 3) / Complex.rect(2, 3) # => (1+0i)
|
602
|
+
# Complex.rect(900) / Complex.rect(1) # => (900+0i)
|
603
|
+
# Complex.rect(-2, 9) / Complex.rect(-9, 2) # => ((36/85)-(77/85)*i)
|
604
|
+
# Complex.rect(9, 8) / 4 # => ((9/4)+2i)
|
605
|
+
# Complex.rect(20, 9) / 9.8 # => (2.0408163265306123+0.9183673469387754i)
|
535
606
|
#
|
536
607
|
def quo: (Numeric) -> Complex
|
537
608
|
|
@@ -545,24 +616,24 @@ class Complex < Numeric
|
|
545
616
|
# With no argument `epsilon` given, returns a Rational object whose value is
|
546
617
|
# exactly equal to that of `self.real.rationalize`:
|
547
618
|
#
|
548
|
-
# Complex(1, 0).rationalize # => (1/1)
|
549
|
-
# Complex(1, Rational(0, 1)).rationalize # => (1/1)
|
550
|
-
# Complex(3.14159, 0).rationalize # => (314159/100000)
|
619
|
+
# Complex.rect(1, 0).rationalize # => (1/1)
|
620
|
+
# Complex.rect(1, Rational(0, 1)).rationalize # => (1/1)
|
621
|
+
# Complex.rect(3.14159, 0).rationalize # => (314159/100000)
|
551
622
|
#
|
552
623
|
# With argument `epsilon` given, returns a Rational object whose value is
|
553
624
|
# exactly or approximately equal to that of `self.real` to the given precision:
|
554
625
|
#
|
555
|
-
# Complex(3.14159, 0).rationalize(0.1) # => (16/5)
|
556
|
-
# Complex(3.14159, 0).rationalize(0.01) # => (22/7)
|
557
|
-
# Complex(3.14159, 0).rationalize(0.001) # => (201/64)
|
558
|
-
# Complex(3.14159, 0).rationalize(0.0001) # => (333/106)
|
559
|
-
# Complex(3.14159, 0).rationalize(0.00001) # => (355/113)
|
560
|
-
# Complex(3.14159, 0).rationalize(0.000001) # => (7433/2366)
|
561
|
-
# Complex(3.14159, 0).rationalize(0.0000001) # => (9208/2931)
|
562
|
-
# Complex(3.14159, 0).rationalize(0.00000001) # => (47460/15107)
|
563
|
-
# Complex(3.14159, 0).rationalize(0.000000001) # => (76149/24239)
|
564
|
-
# Complex(3.14159, 0).rationalize(0.0000000001) # => (314159/100000)
|
565
|
-
# Complex(3.14159, 0).rationalize(0.0) # => (3537115888337719/1125899906842624)
|
626
|
+
# Complex.rect(3.14159, 0).rationalize(0.1) # => (16/5)
|
627
|
+
# Complex.rect(3.14159, 0).rationalize(0.01) # => (22/7)
|
628
|
+
# Complex.rect(3.14159, 0).rationalize(0.001) # => (201/64)
|
629
|
+
# Complex.rect(3.14159, 0).rationalize(0.0001) # => (333/106)
|
630
|
+
# Complex.rect(3.14159, 0).rationalize(0.00001) # => (355/113)
|
631
|
+
# Complex.rect(3.14159, 0).rationalize(0.000001) # => (7433/2366)
|
632
|
+
# Complex.rect(3.14159, 0).rationalize(0.0000001) # => (9208/2931)
|
633
|
+
# Complex.rect(3.14159, 0).rationalize(0.00000001) # => (47460/15107)
|
634
|
+
# Complex.rect(3.14159, 0).rationalize(0.000000001) # => (76149/24239)
|
635
|
+
# Complex.rect(3.14159, 0).rationalize(0.0000000001) # => (314159/100000)
|
636
|
+
# Complex.rect(3.14159, 0).rationalize(0.0) # => (3537115888337719/1125899906842624)
|
566
637
|
#
|
567
638
|
# Related: Complex#to_r.
|
568
639
|
#
|
@@ -574,8 +645,8 @@ class Complex < Numeric
|
|
574
645
|
# -->
|
575
646
|
# Returns the real value for `self`:
|
576
647
|
#
|
577
|
-
# Complex(7).real
|
578
|
-
# Complex(9, -4).real
|
648
|
+
# Complex.rect(7).real # => 7
|
649
|
+
# Complex.rect(9, -4).real # => 9
|
579
650
|
#
|
580
651
|
# If `self` was created with [polar
|
581
652
|
# coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
|
@@ -647,8 +718,8 @@ class Complex < Numeric
|
|
647
718
|
# -->
|
648
719
|
# Returns the value of `self.real` as a Float, if possible:
|
649
720
|
#
|
650
|
-
# Complex(1, 0).to_f # => 1.0
|
651
|
-
# Complex(1, Rational(0, 1)).to_f # => 1.0
|
721
|
+
# Complex.rect(1, 0).to_f # => 1.0
|
722
|
+
# Complex.rect(1, Rational(0, 1)).to_f # => 1.0
|
652
723
|
#
|
653
724
|
# Raises RangeError if `self.imag` is not exactly zero (either `Integer(0)` or
|
654
725
|
# `Rational(0, *n*)`).
|
@@ -661,8 +732,8 @@ class Complex < Numeric
|
|
661
732
|
# -->
|
662
733
|
# Returns the value of `self.real` as an Integer, if possible:
|
663
734
|
#
|
664
|
-
# Complex(1, 0).to_i # => 1
|
665
|
-
# Complex(1, Rational(0, 1)).to_i # => 1
|
735
|
+
# Complex.rect(1, 0).to_i # => 1
|
736
|
+
# Complex.rect(1, Rational(0, 1)).to_i # => 1
|
666
737
|
#
|
667
738
|
# Raises RangeError if `self.imag` is not exactly zero (either `Integer(0)` or
|
668
739
|
# `Rational(0, *n*)`).
|
@@ -677,11 +748,12 @@ class Complex < Numeric
|
|
677
748
|
# -->
|
678
749
|
# Returns the value of `self.real` as a Rational, if possible:
|
679
750
|
#
|
680
|
-
# Complex(1, 0).to_r # => (1/1)
|
681
|
-
# Complex(1, Rational(0, 1)).to_r # => (1/1)
|
751
|
+
# Complex.rect(1, 0).to_r # => (1/1)
|
752
|
+
# Complex.rect(1, Rational(0, 1)).to_r # => (1/1)
|
753
|
+
# Complex.rect(1, 0.0).to_r # => (1/1)
|
682
754
|
#
|
683
755
|
# Raises RangeError if `self.imag` is not exactly zero (either `Integer(0)` or
|
684
|
-
# `Rational(0, *n*)`).
|
756
|
+
# `Rational(0, *n*)`) and `self.imag.to_r` is not exactly zero.
|
685
757
|
#
|
686
758
|
# Related: Complex#rationalize.
|
687
759
|
#
|
@@ -693,11 +765,11 @@ class Complex < Numeric
|
|
693
765
|
# -->
|
694
766
|
# Returns a string representation of `self`:
|
695
767
|
#
|
696
|
-
# Complex(2).to_s # => "2+0i"
|
697
|
-
# Complex(
|
698
|
-
# Complex(
|
699
|
-
# Complex(0, Float::INFINITY).to_s # => "0+Infinity*i"
|
700
|
-
# Complex(Float::NAN, Float::NAN).to_s # => "NaN+NaN*i"
|
768
|
+
# Complex.rect(2).to_s # => "2+0i"
|
769
|
+
# Complex.rect(-8, 6).to_s # => "-8+6i"
|
770
|
+
# Complex.rect(0, Rational(1, 2)).to_s # => "0+1/2i"
|
771
|
+
# Complex.rect(0, Float::INFINITY).to_s # => "0+Infinity*i"
|
772
|
+
# Complex.rect(Float::NAN, Float::NAN).to_s # => "NaN+NaN*i"
|
701
773
|
#
|
702
774
|
def to_s: () -> String
|
703
775
|
|
@@ -707,7 +779,7 @@ class Complex < Numeric
|
|
707
779
|
end
|
708
780
|
|
709
781
|
# <!-- rdoc-file=complex.c -->
|
710
|
-
# Equivalent to `Complex(0, 1)`:
|
782
|
+
# Equivalent to `Complex.rect(0, 1)`:
|
711
783
|
#
|
712
784
|
# Complex::I # => (0+1i)
|
713
785
|
#
|
data/core/data.rbs
CHANGED
@@ -83,7 +83,7 @@ class Data
|
|
83
83
|
# #=> #<data Measure amount=1, unit="km">
|
84
84
|
#
|
85
85
|
# Note that member-less Data is acceptable and might be a useful technique for
|
86
|
-
# defining several
|
86
|
+
# defining several homogeneous data classes, like
|
87
87
|
#
|
88
88
|
# class HTTPFetcher
|
89
89
|
# Response = Data.define(:body)
|
@@ -411,5 +411,5 @@ class Data
|
|
411
411
|
# out = origin.with(z: 1) # ArgumentError: unknown keyword: :z
|
412
412
|
# some_point = origin.with(1, 2) # ArgumentError: expected keyword arguments, got positional arguments
|
413
413
|
#
|
414
|
-
def with: (**untyped) ->
|
414
|
+
def with: (**untyped) -> self
|
415
415
|
end
|