returns the protocol family as an integer.
Addrinfo.tcp("localhost", 80).pfamily == Socket::PF_INET #=> true
Creates a pair of sockets connected to each other.
socktype should be a socket type such as: :STREAM, :DGRAM, :RAW, etc.
protocol should be a protocol defined in the domain. 0 is default protocol for the domain.
s1, s2 = UNIXSocket.pair s1.send "a", 0 s1.send "b", 0 p s2.recv(10) #=> "ab"
Creates a pair of sockets connected to each other.
socktype should be a socket type such as: :STREAM, :DGRAM, :RAW, etc.
protocol should be a protocol defined in the domain. 0 is default protocol for the domain.
s1, s2 = UNIXSocket.pair s1.send "a", 0 s1.send "b", 0 p s2.recv(10) #=> "ab"
Returns false
. Just for compatibility to IO
.
Returns the size of the buffer string.
Truncates the buffer string to at most integer bytes. The stream must be opened for writing.
Appends str
to the string being scanned. This method does not affect scan pointer.
s = StringScanner.new("Fri Dec 12 1975 14:39") s.scan(/Fri /) s << " +1000 GMT" s.string # -> "Fri Dec 12 1975 14:39 +1000 GMT" s.scan(/Dec/) # -> "Dec"
Tests whether the given pattern
is matched from the current scan pointer. Returns the length of the match, or nil
. The scan pointer is not advanced.
s = StringScanner.new('test string') p s.match?(/\w+/) # -> 4 p s.match?(/\w+/) # -> 4 p s.match?("test") # -> 4 p s.match?(/\s+/) # -> nil
Returns true
iff the last match was successful.
s = StringScanner.new('test string') s.match?(/\w+/) # => 4 s.matched? # => true s.match?(/\d+/) # => nil s.matched? # => false
Returns the last matched string.
s = StringScanner.new('test string') s.match?(/\w+/) # -> 4 s.matched # -> "test"
Sets current codepage. The WIN32OLE.codepage
is initialized according to Encoding.default_internal
. If Encoding.default_internal
is nil then WIN32OLE.codepage
is initialized according to Encoding.default_external
.
WIN32OLE.codepage = WIN32OLE::CP_UTF8 WIN32OLE.codepage = 65001
disconnects OLE server. If this method called, then the WIN32OLE_EVENT
object does not receive the OLE server event any more. This method is trial implementation.
ie = WIN32OLE.new('InternetExplorer.Application') ev = WIN32OLE_EVENT.new(ie) ev.on_event() {...} ... ev.unadvise
Returns true if argument is optional.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook') method = WIN32OLE_METHOD.new(tobj, 'SaveAs') param1 = method.params[0] puts "#{param1.name} #{param1.optional?}" # => Filename true
Returns the number of key-value pairs in the hash.
h = { "d" => 100, "a" => 200, "v" => 300, "e" => 400 } h.size #=> 4 h.delete("a") #=> 200 h.size #=> 3 h.length #=> 3
Hash#length
is an alias for Hash#size
.
Adds the contents of the given hashes to the receiver.
If no block is given, entries with duplicate keys are overwritten with the values from each other_hash
successively, otherwise the value for each duplicate key is determined by calling the block with the key, its value in the receiver and its value in each other_hash
.
h1 = { "a" => 100, "b" => 200 } h1.merge! #=> {"a"=>100, "b"=>200} h1 #=> {"a"=>100, "b"=>200} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h1.merge!(h2) #=> {"a"=>100, "b"=>246, "c"=>300} h1 #=> {"a"=>100, "b"=>246, "c"=>300} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h3 = { "b" => 357, "d" => 400 } h1.merge!(h2, h3) #=> {"a"=>100, "b"=>357, "c"=>300, "d"=>400} h1 #=> {"a"=>100, "b"=>357, "c"=>300, "d"=>400} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h3 = { "b" => 357, "d" => 400 } h1.merge!(h2, h3) {|key, v1, v2| v1 } #=> {"a"=>100, "b"=>200, "c"=>300, "d"=>400} h1 #=> {"a"=>100, "b"=>200, "c"=>300, "d"=>400}
Hash#update
is an alias for Hash#merge!
.
Adds the contents of the given hashes to the receiver.
If no block is given, entries with duplicate keys are overwritten with the values from each other_hash
successively, otherwise the value for each duplicate key is determined by calling the block with the key, its value in the receiver and its value in each other_hash
.
h1 = { "a" => 100, "b" => 200 } h1.merge! #=> {"a"=>100, "b"=>200} h1 #=> {"a"=>100, "b"=>200} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h1.merge!(h2) #=> {"a"=>100, "b"=>246, "c"=>300} h1 #=> {"a"=>100, "b"=>246, "c"=>300} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h3 = { "b" => 357, "d" => 400 } h1.merge!(h2, h3) #=> {"a"=>100, "b"=>357, "c"=>300, "d"=>400} h1 #=> {"a"=>100, "b"=>357, "c"=>300, "d"=>400} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h3 = { "b" => 357, "d" => 400 } h1.merge!(h2, h3) {|key, v1, v2| v1 } #=> {"a"=>100, "b"=>200, "c"=>300, "d"=>400} h1 #=> {"a"=>100, "b"=>200, "c"=>300, "d"=>400}
Hash#update
is an alias for Hash#merge!
.
Returns a new hash that combines the contents of the receiver and the contents of the given hashes.
If no block is given, entries with duplicate keys are overwritten with the values from each other_hash
successively, otherwise the value for each duplicate key is determined by calling the block with the key, its value in the receiver and its value in each other_hash
.
When called without any argument, returns a copy of the receiver.
h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h3 = { "b" => 357, "d" => 400 } h1.merge #=> {"a"=>100, "b"=>200} h1.merge(h2) #=> {"a"=>100, "b"=>246, "c"=>300} h1.merge(h2, h3) #=> {"a"=>100, "b"=>357, "c"=>300, "d"=>400} h1.merge(h2) {|key, oldval, newval| newval - oldval} #=> {"a"=>100, "b"=>46, "c"=>300} h1.merge(h2, h3) {|key, oldval, newval| newval - oldval} #=> {"a"=>100, "b"=>311, "c"=>300, "d"=>400} h1 #=> {"a"=>100, "b"=>200}
Returns a new array that is a one-dimensional flattening of this hash. That is, for every key or value that is an array, extract its elements into the new array. Unlike Array#flatten
, this method does not flatten recursively by default. The optional level argument determines the level of recursion to flatten.
a = {1=> "one", 2 => [2,"two"], 3 => "three"} a.flatten # => [1, "one", 2, [2, "two"], 3, "three"] a.flatten(2) # => [1, "one", 2, 2, "two", 3, "three"]
Returns a new hash with the nil values/key pairs removed
h = { a: 1, b: false, c: nil } h.compact #=> { a: 1, b: false } h #=> { a: 1, b: false, c: nil }
Removes all nil values from the hash. Returns nil if no changes were made, otherwise returns the hash.
h = { a: 1, b: false, c: nil } h.compact! #=> { a: 1, b: false }
Returns true
if the given key is present in hsh.
h = { "a" => 100, "b" => 200 } h.has_key?("a") #=> true h.has_key?("z") #=> false
Note that include?
and member?
do not test member equality using ==
as do other Enumerables.
See also Enumerable#include?
Adds the contents of hash
to the environment variables. If no block is specified entries with duplicate keys are overwritten, otherwise the value of each duplicate name is determined by calling the block with the key, its value from the environment and its value from the hash.
Adds the contents of hash
to the environment variables. If no block is specified entries with duplicate keys are overwritten, otherwise the value of each duplicate name is determined by calling the block with the key, its value from the environment and its value from the hash.
Returns the number of environment variables.