标签: operator-keyword

覆盖==运算符.如何比较null?

可能重复:
如何在没有无限递归的情况下检查'=='运算符重载中的空值?

对此可能有一个简单的答案......但它似乎在逃避我.这是一个简化的例子:

public class Person
{
   public string SocialSecurityNumber;
   public string FirstName;
   public string LastName;
}
Run Code Online (Sandbox Code Playgroud)

让我们说,对于这个特定的应用程序,如果社会安全号码匹配,并且两个名称都匹配,那么我们指的是同一个"人"是有效的.

public override bool Equals(object Obj)
{
    Person other = (Person)Obj;
    return (this.SocialSecurityNumber == other.SocialSecurityNumber &&
        this.FirstName == other.FirstName &&
        this.LastName == other.LastName);
}
Run Code Online (Sandbox Code Playgroud)

为了保持一致,我们还为团队中不使用该.Equals方法的开发人员覆盖==和!=运算符.

public static bool operator !=(Person person1, Person person2)
{
    return ! person1.Equals(person2);
}

public static bool operator ==(Person person1, Person person2)
{
    return person1.Equals(person2);
}
Run Code Online (Sandbox Code Playgroud)

好又花花公子,对吧?

但是,当Person对象发生时会发生什么null

你不能写:

if (person == null)
{
    //fail! …
Run Code Online (Sandbox Code Playgroud)

.net c# null overloading operator-keyword

132
推荐指数
4
解决办法
6万
查看次数

双问号(??运算符)在PHP中意味着什么

我正在深入研究Symfony framwork(版本4)代码并发现代码的和平:

$env = $_SERVER['APP_ENV'] ?? 'dev';
Run Code Online (Sandbox Code Playgroud)

我不太确定这实际上是做什么但我想它扩展到类似的东西:

$env = $_SERVER['APP_ENV'] != null ? $_SERVER['APP_ENV'] : 'dev';
Run Code Online (Sandbox Code Playgroud)

或者可能:

$env = isset($_SERVER['APP_ENV']) ? $_SERVER['APP_ENV'] : 'dev';
Run Code Online (Sandbox Code Playgroud)

有人对这个问题有任何精确性吗?

编辑:

对于回答问题的所有人:谢谢所有标记我的问题的人都是否定的,因为已经存在类似的问题(PHP三元运算符vs null合并运算符):

确实,这两个问题非常相似.然而,每个人都很难想象"??" 被称为合并运算符.

否则我可以在官方文档上轻松找到它:

http://php.net/manual/en/migration70.new-features.php#migration70.new-features.null-coalesce-op

但是,对于那些不知道在php 7中添加了此功能的人来说,更有可能输入:

"php ?? operator"或"php double question mark operator"

这就是为什么我的问题具有附加价值的原因.

我请你,重新考虑你的负面反馈.谢谢

此致,Epixilog

php operator-keyword

129
推荐指数
3
解决办法
4万
查看次数

C++双地址运算符?(&&)

我正在阅读STL源代码,我不知道&&运算符应该做什么.以下是一个代码示例stl_vector.h:

vector&
operator=(vector&& __x) // <-- Note double ampersands here
{
    // NB: DR 675.
    this->clear();
    this->swap(__x); 
    return *this;
}
Run Code Online (Sandbox Code Playgroud)

"地址"是否有意义?为什么它有两个地址运算符而不是一个?

c++ stl memory-address operator-keyword

116
推荐指数
5
解决办法
9万
查看次数

如何在BigDecimal上使用>,=,<等比较运算符

我有一个domainPrice设置为BigDecimal数据类型的域类.现在我正在尝试创建一个比较价格的方法,但似乎我不能在BigDecimal数据类型中有比较运算符.我是否必须更改数据类型或是否有其他方法?

java spring bigdecimal operator-keyword

88
推荐指数
8
解决办法
13万
查看次数

连接字符串不能按预期工作

我知道这是一个常见的问题,但是在寻找参考资料和其他材料时,我找不到这个问题的明确答案.

请考虑以下代码:

#include <string>

// ...
// in a method
std::string a = "Hello ";
std::string b = "World";
std::string c = a + b;
Run Code Online (Sandbox Code Playgroud)

编译器告诉我它找不到重载的运算符char[dim].

这是否意味着在字符串中没有+运算符?

但在几个例子中,存在类似这样的情况.如果这不是连接更多字符串的正确方法,那么最好的方法是什么?

c++ string-concatenation standard-library stdstring operator-keyword

84
推荐指数
4
解决办法
22万
查看次数

演员可以明确吗?

当涉及构造函数时,添加关键字会explicit阻止热情的编译器在不是程序员的第一个意图时创建对象.这种机制是否也适用于铸造操作员?

struct Foo
{
    operator std::string() const;
};
Run Code Online (Sandbox Code Playgroud)

例如,在这里,我希望能够投入Foo到一个std::string,但我不希望这种投射是隐含的.

c++ casting explicit operator-keyword

83
推荐指数
1
解决办法
2万
查看次数

变量运算符可能吗?

有没有办法做类似于以下任何一种情况:

var1 = 10; var2 = 20;
var operator = "<";
console.log(var1 operator var2); // returns true
Run Code Online (Sandbox Code Playgroud)

- 要么 -

var1 = 10; var2 = 20;
var operator = "+";
total = var1 operator var2; // total === 30
Run Code Online (Sandbox Code Playgroud)

javascript variables operators dynamic-variables operator-keyword

76
推荐指数
5
解决办法
4万
查看次数

在Python中,>>和<<是什么意思?

我注意到我可以做一些事情,比如2 << 5获得64并1000 >> 2获得250.

我还可以用>>print:

print >>obj, "Hello world"
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

python syntax operator-keyword

55
推荐指数
7
解决办法
6万
查看次数

Scala的'::'运算符,它是如何工作的?

在Scala中,我可以创建一个caseclass,case class Foo(x:Int)然后将它放在一个列表中,如下所示:

List(Foo(42))
Run Code Online (Sandbox Code Playgroud)

现在,这里没什么奇怪的.以下对我来说很奇怪.运算符::是列表中的函数,对吧?对于Scala中有一个参数的任何函数,我可以用中缀表示法调用它.一个例子是对象的1 + 2一个函数.我刚刚定义的类没有运算符,那么以下可能如何?(+)IntFoo::

Foo(40) :: List(Foo(2))
Run Code Online (Sandbox Code Playgroud)

在Scala 2.8 RC1中,我从交互式提示中获得以下输出:

scala> case class Foo(x:Int)
defined class Foo

scala> Foo(40) :: List(Foo(2))
res2: List[Foo] = List(Foo(40), Foo(2))
Run Code Online (Sandbox Code Playgroud)

我可以继续使用它,但解释是什么?

scala list operator-keyword

54
推荐指数
4
解决办法
2万
查看次数

operator.itemgetter和sort()如何在Python中工作?

我有以下代码:

# initialize
a = []

# create the table (name, age, job)
a.append(["Nick", 30, "Doctor"])
a.append(["John",  8, "Student"])
a.append(["Paul", 22, "Car Dealer"])
a.append(["Mark", 66, "Retired"])    

# sort the table by age
import operator
a.sort(key=operator.itemgetter(1))    

# print the table
print(a)
Run Code Online (Sandbox Code Playgroud)

它创建一个4x3表,然后按年龄对其进行排序.我的问题是,到底是key=operator.itemgetter(1)做什么的?该operator.itemgetter函数是否返回项目的值?为什么我不能只输入那样的东西key=a[x][1]?或者我可以吗?与运营商怎么能打印等形式的一定值3x222

  1. Python如何对表进行排序?我可以反向排序吗?

  2. 如何根据第一个年龄段的两列对其进行排序,然后如果年龄与b名称相同?

  3. 我怎么能不这样做operator

python sorting operator-keyword

53
推荐指数
3
解决办法
12万
查看次数