标签: operator-keyword

Python + =与.extend()在全局变量的函数内

我已经阅读了其他一些SO(PythonScope全局变量不需要全局),但似乎没有任何内容可以像我想的那样明确解释,而且我在精神上筛选PyDocs是否告诉我问题的答案时遇到了麻烦:

myList = [1]

def foo():
    myList = myList + [2, 3]
def bar():
    myList.extend([2, 3])
def baz():
    myList += [2, 3]
Run Code Online (Sandbox Code Playgroud)

现在,可以理解,

>>> foo()
UnboundLocalError
Run Code Online (Sandbox Code Playgroud)

bar()  # works
myList # shows [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

但是之后

>>> baz()
UnboundLocalError
Run Code Online (Sandbox Code Playgroud)

然而,我认为,+=在这种情况下extend(),隐含地称为方法运算符的东西,但错误意味着由于某种原因它实际上不会被+=视为extends().这与Python解析应该如何工作一致吗?

我本以为调用与方法运算符等效的函数,它们在所有情况下都是等价的.相反,它似乎将其视为+=实际的赋值运算符.除此之外,这并不完全正确,因为如果我做了某些事情(诚然做作):

myList = range(50000000) # wait a second or two on my laptop before returning
myList += [0]            # returns instantly
myList = …
Run Code Online (Sandbox Code Playgroud)

python methods global operator-keyword

5
推荐指数
1
解决办法
622
查看次数

只用少于运算符测试等价?

假设我有两个类型'T'的文字.我想测试它们是否相同,但类型'T'只有"小于"运算符实现.我怎样才能在C++中测试它?

c++ comparison equivalence operator-keyword

5
推荐指数
1
解决办法
326
查看次数

PHP中具有回声值的三元运算符

我想在三元运算符中编写以下代码。我尝试了很多方法,但是根本没有用。

<?php 

if(isset($options['footer_txt_color'])) {

    echo $options['footer_txt_color'];

} else {

    echo "#ffffff";

}

?>
Run Code Online (Sandbox Code Playgroud)

php ternary operator-keyword

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

Kendo Pivot Grid不适用于运营商gte

我已经像示例一样创建了一个剑道枢轴网格.我有这个选择

                $scope.options = {
                "dataSource": {
                    "type": "xmla",
                    "columns": [],
                    "rows": [{
                        "name": ["[Date].[Hierarchy - QM]"],
                        "expand": false
                    }],
                    "measures": [],
                    "transport": {
                        "connection": {
                            "catalog": "EDI",
                            "cube": "EDI"
                        },
                        "read": {
                            "url": "..../msmdpump.dll",
                            "type": "POST",
                            "dataType": "text",
                            "contentType": "text/xml"
                        }
                    },
                    "filter": {
                        "field": "[Date].[Hierarchy - QM]",
                        "operator": "eq",
                        "value": "new Date(2016, 1, 1)"
                    },
                    "schema": {
                        "type": "xmla"
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

一切都很完美.但是,当我将过滤器运算符从'eq'更改为'gte'时,我得到以下错误

无法读取未定义的属性'replace'

pivot filter operator-keyword kendo-ui

5
推荐指数
0
解决办法
120
查看次数

在调试模式下,对std :: vector使用`.at()`而不是operator` []`

如果我尝试访问std::vector越界,将导致未定义的行为.

const std::vector<int> vec {1,2,3};
const int a = vec[4];
Run Code Online (Sandbox Code Playgroud)

然而,这段代码可能不会立即失败,但a会有一个任意值;

如果vec通过该方法访问,.at()则将抛出异常.

const int a = vec.at(4);
Run Code Online (Sandbox Code Playgroud)

缺点是,如果.at()总是使用,性能将显着下降.

我的问题是,如果某些C++编译器支持编译标志,则会切换operator []到该.at()方法.

将其打开可以获得良好的可调试代码.将其关闭会导致快速发布可执行文件.

我知道堆检查工具,比如valgrind会发现这些bug,但是它们需要花费很多时间.

c++ vector stdvector operator-keyword

5
推荐指数
0
解决办法
118
查看次数

为什么VS和gcc在这里调用不同的转换运算符(常量与非常量)?

这段代码当然是愚蠢的,但是我只是为了说明问题编写了代码。这里是:

#include <iostream>
using namespace std;

struct foo {
    int a = 42;

    template <typename T>
    operator T* () {
        cout << "operator T*()\n";
        return reinterpret_cast<T*>(&a);
    }

    template <typename T>
    operator const T* () const {
        cout << "operator const T*() const\n";
        return reinterpret_cast<const T*>(&a);
    }

    template <typename T>
    T get() {
        cout << "T get()\n";
        return this->operator T();
    }
};

int main() {
    foo myFoo;
    cout << *myFoo.get<const int*>() << '\n';
}
Run Code Online (Sandbox Code Playgroud)

使用Visual Studio 2019(ISO C ++ 17,/Ox …

c++ const operator-overloading operator-keyword

5
推荐指数
1
解决办法
105
查看次数

一个如何发音“:=“?

在讨论VBA时,如何发音:=用于将值分配给命名参数(例如Header:=xlYes)?有一种公认的说法吗?由于我是VBA自学的,所以我实际上没有与任何人进行任何讨论,但是在阅读/编写代码时,我的脑海里总是voice绊绊。我一直称其为“强制”,因为它强制特定变量采用特定值。(将示例读取为“ Header force xlYes”)

General search engines aren't turning up anything useful, nor did www.forvo.com, which I have seen recommended for many pronunciation questions here.

excel vba operator-keyword

5
推荐指数
0
解决办法
146
查看次数

为什么可以在JavaScript中减去Date对象?是否有任何形式的运算符重载?

为什么下面的代码真正起作用?

var firstDate = new Date();

// some time passing here

var secondDate = new Date();

// Difference seems to contain difference in miliseconds. 

var difference = secondDate - firstDate;
Run Code Online (Sandbox Code Playgroud)

我相信,我得到的等同于secondDate.getTime() - firstDate.getTime()。唯一的问题是,在后台如何转换为毫秒数?这是某种运算符重载吗?

javascript overloading date operator-keyword

4
推荐指数
1
解决办法
288
查看次数

大查询 - 与/或运算符

我尝试获取一个答案数据库,该数据库为我提供目的地美国和不同原籍国的所有数据。然而,在一行中可能会写成 CN、HK、JP - 含义很多。因此,我编写的查询如下,但答案仅包含来源 CN 或 HK,但不包含“CN,JP,HK”。
什么是正确的代码?

SELECT destination_country,origin_country, createDate FROM [DataWarehouse.Draft] 
Where destination_country contains "US"
And originCountries In ("CN", "HK")
Run Code Online (Sandbox Code Playgroud)

行 来源国家/地区 目的地国家/地区 创建周
1 CN US 2014W30
2 CN US 2014W30
3 CN US 2014W30
4 CN US 2014W30
5 HK US 2014W30
6 HK US 2014W30

selection operator-keyword google-bigquery

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

Ruby:仅在某些情况下重载运算符行为

我的问题是:如何在内置类(例如 Integer.new.+)上重载运算符,但仅限于某些情况,具体取决于第二个操作数的类

这是我正在寻找的行为:

myObject = myClass.new
1 + myObject #=> special behaviour
1 + 2        #=> default behaviour (3)
Run Code Online (Sandbox Code Playgroud)

例如,在 Python 中,我会__radd__在 myClass 上定义一个方法来覆盖情况 1。

我尝试过使用super但显然Numeric没有操作员方法。

理想情况下,我正在寻找一种提取+方法并重命名它的方法。

像这样:

class Integer
  self.plus = self.+  # you know what i mean, I don't know how else to express this.
                      # I also know that methods don't work like this, this is just to
                      # illustrate a point.
  def + other
    other.class == myClass ? …
Run Code Online (Sandbox Code Playgroud)

ruby methods operator-overloading operator-keyword

4
推荐指数
1
解决办法
473
查看次数