Что делает оператор || =, обозначают в Ruby? [дубликат]

COM использует эту стратегию удаления экземпляра. COM делает деструктор частным и обеспечивает интерфейс для удаления экземпляра.

Вот пример того, на что был бы похож метод Выпуска.

int MyRefCountedObject::Release() 
{
 _refCount--;
 if ( 0 == _refCount ) 
 {
    delete this;
    return 0;
 }
 return _refCount;
}

COM-объекты ATL являются главным примером этого шаблона.

20
задан Community 23 May 2017 в 12:01
поделиться

5 ответов

Присваивает значение, если оно еще не присвоено. Примерно так:

a = nil
a ||= 1

a = 1
a ||= 2

В первом примере a будет установлено в 1. Во втором a будет по-прежнему 1.

24
ответ дан 30 November 2019 в 00:23
поделиться

Из вопроса Общие идиомы Ruby :

эквивалентно

 if a == nil || a == false   
    a = b 
 end
7
ответ дан 30 November 2019 в 00:23
поделиться

Если b равно нулю, присвойте ему a.

a = :foo
b ||= a
# b == :foo

Если b не равно нулю, не меняйте его.

a = :foo
b = :bar
b ||= a
# b == :bar
1
ответ дан 30 November 2019 в 00:23
поделиться

Это «сокращенное присвоение» (см. Справочник по Ruby Pocket, стр. 10)

a = a || b

(означает, что a присваивается значение, образованное логическим или из a, b

становится

a || = b

Почти все операторы имеют сокращенную версию (+ = * = && = и т. д.) .

0
ответ дан 30 November 2019 в 00:23
поделиться

Я могу только догадываться, но я предполагаю, что это означает логический оператор в сочетании с установкой переменной (например, ^ =, + =, * = на других языках)

так x || = y совпадает с x = x || y

edit: я угадал, см. http://phrogz.net/ProgrammingRuby/language.html#table_18.4

x = x || y означает: использовать x, если установлено, иначе назначить y. его можно использовать для обеспечения хотя бы инициализации переменных (0, пустой массив и т. д.)

1
ответ дан 30 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: