A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Concern/Dereferenceable.html below:

Module: Concurrent::Concern::Dereferenceable — Concurrent Ruby

Module: Concurrent::Concern::Dereferenceable Overview

Object references in Ruby are mutable. This can lead to serious problems when the #value of a concurrent object is a mutable reference. Which is always the case unless the value is a Fixnum, Symbol, or similar "primitive" data type. Most classes in this library that expose a #value getter method do so using the Dereferenceable mixin module.

Copy Options

Object references in Ruby are mutable. This can lead to serious problems when the #value of an object is a mutable reference. Which is always the case unless the value is a Fixnum, Symbol, or similar "primitive" data type. Each instance can be configured with a few options that can help protect the program from potentially dangerous operations. Each of these options can be optionally set when the object instance is created:

When multiple deref options are set the order of operations is strictly defined. The order of deref operations is:

Because of this ordering there is no need to #freeze an object created by a provided :copy_on_deref block. Simply set :freeze_on_deref to true. Setting both :dup_on_deref to true and :freeze_on_deref to true is as close to the behavior of a "pure" functional language (like Erlang, Clojure, or Haskell) as we are likely to get in Ruby.

Instance Method Summary collapse Instance Method Details #value ⇒ Object Also known as: deref

Return the value this object represents after applying the options specified by the #set_deref_options method.

21
22
23
# File 'lib/concurrent-ruby/concurrent/concern/dereferenceable.rb', line 21

def value
  synchronize { apply_deref_options(@value) }
end

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4