Это позволяет дифференцирование поразрядной константы и логической константы. Логическая константа - когда объект не изменяется способом, который видим через открытый интерфейс, как Ваш пример блокировки. Другим примером был бы класс, который вычисляет значение в первый раз, когда его требуют и кэширует результат.
, Так как C++ 11 mutable
может использоваться на лямбде, чтобы обозначить, что вещи, полученные значением, являются модифицируемыми (они не по умолчанию):
int x = 0;
auto f1 = [=]() mutable {x = 42;}; // OK
auto f2 = [=]() {x = 42;}; // Error: a by-value capture cannot be modified in a non-mutable lambda
This is the conditional operator.
$x ? $y : $z
means "if $x
is true, then use $y
; otherwise use $z
".
It also has a short form.
$x ?: $z
means "if $x
is true, then use $x
; otherwise use $z
".
People will tell you that ?:
is "the ternary operator". This is wrong. ?:
is a ternary operator, which means that it has three operands. People wind up thinking its name is "the ternary operator" because it's often the only ternary operator a given language has.
Это называется тернарным оператором . Если первое выражение истинно, используется HTTPS_SERVER
, иначе выбирается HTTP_SERVER
.
По сути, это сокращение if
, и приведенный выше код может также можно переписать следующим образом:
if ($request_type == 'SSL') {
HTTPS_SERVER;
}
else {
HTTP_SERVER;
}
Иногда это называют тернарным условным оператором. Тернарный означает, что он имеет три аргумента, например x? y: z
. По сути, он проверяет, истинно ли x
; если это так, тогда введите y
вместо этой операции, в противном случае z
.
$hello = $something ? "Yes, it's true" : "No, it's false";
Это однострочный оператор if:
condition ? true : false
Переведенный в обычный оператор if в вашем случае, это будет:
if($request_type == 'SSL') HTTPS_SERVER;
else HTTP_SERVER;
По сути, это интересный способ написания оператора if
- else
. Некоторые говорят, что его легче читать, другие - нет.
Как говорит Джон Т., он называется тернарным оператором и по сути является сокращенной версией оператора if / else. Ваш пример, как полный оператор if / else, будет выглядеть так:
if($request_type == 'SSL')
{
HTTPS_SERVER;
}
else
{
HTTP_SERVER;
}
This is a short way of writing if
sentences. It is also used in other languages like Java, JavaScript and others.
Your code,
$protocol = $request_type == 'SSL' ? HTTPS_SERVER : HTTP_SERVER;
can be written like this:
if ($request_type == 'SSL')
$protocol = HTTPS_SERVER;
else
$protocol = HTTP_SERVER;
Условный оператор ? :
- оператор, который используется для проверки условия и выбора значения в зависимости от значения условия. Это выражается в следующей форме:
variable = condition ? expression1 : expression2;
Работает следующим образом ...
Например:
x = (a>b) ? 5 : 9
Здесь для x сначала оценивается условие (a> b). Если это условие выполняется, то x станет значением 5 (т.е. x = 5). Но если условие (a> b) становится ложным, тогда x будет иметь значение 9 (т.е. x = 9).
Тернарный оператор
Иногда условный оператор ? :
также называется тернарным оператором. Это потому, что в нем задействованы три операнда. Например:
x ? y : z
Здесь x, y и z - три операнда. Если условие x истинно, то присваивается значение y, иначе присваивается значение z.