Skip to content

Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →

instance method

IO::Buffer#set_value

(::IO::Buffer::int_get_type | ::IO::Buffer::float_get_type, ::Integer offset, ::Float | ::Integer value) -> ::Integer
set_value(type, offset, value) → offset

Write to a buffer a value of type at offset. type should be one of symbols described in get_value. Returns the offset just after the written value.

Example
buffer = IO::Buffer.new(8)
# =>
# #<IO::Buffer 0x0000555f5c9a2d50+8 INTERNAL>
# 0x00000000  00 00 00 00 00 00 00 00

buffer.set_value(:U8, 1, 111)
# => 2

buffer
# =>
# #<IO::Buffer 0x0000555f5c9a2d50+8 INTERNAL>
# 0x00000000  00 6f 00 00 00 00 00 00                         .o......

Note that if the type is integer and value is Float, the implicit truncation is performed:

Example
buffer = IO::Buffer.new(8)
buffer.set_value(:U32, 0, 2.5)

buffer
# =>
# #<IO::Buffer 0x0000555f5c9a2d50+8 INTERNAL>
# 0x00000000  00 00 00 02 00 00 00 00
#                      ^^ the same as if we'd pass just integer 2
See also #set_string #set_values #readonly? #size also in 4.0 · 3.4 · 3.3 · 3.2 · 3.1