我正在观看视频,看到了这段代码:
class Dog {
public:
Dog() : age(3), name("dummy") {}
void setAge(const int &a) { age = a; }
private:
int age;
std::string name;
};
Run Code Online (Sandbox Code Playgroud)
我对函数签名感到好奇,setAge因为我从未将其const用作函数参数.我看了几个相关的答案,但没有一个似乎回答了我的问题.
在这样一个基本的例子中,很难看到将const引用传递给函数的好处.
是否有任何理由为什么你要做出参考一个const?我能想到的唯一应用就是嵌入式编程,在制作变量副本时会浪费宝贵的空间.
是否有任何简单的例子,通过const引用很容易看到影响?
我得到了一个学校作业,这是对面向对象编程的介绍.我真的很接近解决这个问题,我猜这个语法有些问题.也许你们中的一些专业人员确切知道问题是什么?
我上课了:
class CashRegister():
__taxRate = 0
__numProductsSold = 0
__totalRevenue = 0.0
__taxAmount = 0.0
__soldProducts = []
def __init__(self, taxRate):
self.__taxRate = taxRate
def getNumProductsSold(self):
return self.__numProductsSold
def getTotalRevenue(self):
return self.__totalRevenue
def getTaxAmount(self):
return self.__taxAmount
def getSoldProducts(self):
return self.__soldProducts
def addItem(self, product, price):
self.__numProductsSold +=1
self.__totalRevenue += price
self.__taxAmount += price * self.__taxRate
self.__soldProducts.append(product)
Run Code Online (Sandbox Code Playgroud)
我试着在这里打电话:
import CashRegister
def main():
testRegister = CashRegister(22)
testProduct = "Mat"
testRegister.addItem(testProduct, 23.99)
print testRegister.getTotalRevenue ()
if __name__ == '__main__':
main();
Run Code Online (Sandbox Code Playgroud)
有谁发现了这个问题?如标题所示获取错误消息.
([1|2|3|4|5|6|7|8|9]) 和 (1|2|3|4|5|6|7|8|9)
我想检查思科交换机的每个端口是否有一组指定的命令.端口编号为1到9.使用正则表达式我希望代码选择每个数字以验证配置.
我刚刚开始学习一点Rust,并且对变量的可变性概念非常感兴趣.
我正在尝试编写与此C++程序非常相似的内容.
#include <cstdio>
void do_something(int &var) {
var++;
}
int main() {
int a = 3;
int b = a;
printf("a is %d and b is %d\n", a, b);
do_something(b);
printf("a is %d and b is %d\n", a, b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望看到:
a是3,b是3
a是3,b是4
这个想法是传递引用呈现b可变,但a不可变.
以下是我假设在Rust中编写此程序的方法:
fn main() {
let a: i32 = 3;
let b: &mut i32 = &a;
println!("a is {} and b is {}", a, b);
do_something(b);
println!("a is {} and …Run Code Online (Sandbox Code Playgroud) 我正在进行代码挑战,我发现我的代码发生了一些奇怪的事情,所以我用C++运行它
function sumPrimes (num)
{
var sum=0;
for(var i=2; i<num; i++)
{
if(primeNumber(i)===true)
sum+=i;
}
return sum;
}
function primeNumber (i)
{
if(i==2 || i==3 || i==5 || i==7)
return true;
if(i%2!=0 && i%3!=0 && i%5!=0 && i%7!=0)
return true;
}
sumPrimes(977);
Run Code Online (Sandbox Code Playgroud)
这给了我107812的结果,但是当我用C++做同样的事情时
#include <iostream>
using namespace std;
bool primeNumber(int);
int sumPrimes(int);
int main()
{
int n;
cout << "n: ";
cin >> n;
cout << "Sum : " << sumPrimes(n) << endl;
system("PAUSE>=0");
}
int sumPrimes(int n)
{
int …Run Code Online (Sandbox Code Playgroud) 有人可以帮我解决这个python api调用程序吗?
import json
from pprint import pprint
import requests
weather = requests.get('http://api.openweathermap.org/data/2.5/weather?
q=London&APPID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
pprint(weather.json())
wjson = weather.read()
wjdata = json.load(weather)
print (wjdata['temp_max'])
Run Code Online (Sandbox Code Playgroud)
所以使用这段代码,我试图从天气api获取信息,它正确打印它,但当我想选择某些值时,我得到这个错误.
Traceback (most recent call last):
File "gawwad.py", line 7, in <module>
wjson = weather.read()
AttributeError: 'Response' object has no attribute 'read'
Run Code Online (Sandbox Code Playgroud) 我正在为我的 Django Rest Framework 编写一些测试,并试图使它们尽可能简单。之前,我使用 factory boy 创建对象,以便保存可用于 GET 请求的对象。
为什么我在测试中的 POST 请求没有在我的测试数据库中创建实际对象?使用实际 API 一切正常,但我无法在测试中获取 POST 以保存对象以使其可用于 GET 请求。有什么我想念的吗?
from rest_framework import status
from rest_framework.test import APITestCase
# from .factories import InterestFactory
class APITestMixin(object):
"""
mixin to perform the default API Test functionality
"""
api_root = '/v1/'
model_url = ''
data = {}
def get_endpoint(self):
"""
return the API endpoint
"""
url = self.api_root + self.model_url
return url
def test_create_object(self):
"""
create a new object
"""
response = self.client.post(self.get_endpoint(), self.data) …Run Code Online (Sandbox Code Playgroud) 我试图找到Rust中正则表达式的所有匹配范围,并在文档中找到了一个非常有前景的方法.这是我找到的示例用法
let text = "Retroactively relinquishing remunerations is reprehensible.";
for pos in Regex::new(r"\b\w{13}\b").unwrap().find_iter(text) {
println!("{:?}", pos);
}
// Output:
// (0, 13)
// (14, 27)
// (28, 41)
// (45, 58)
Run Code Online (Sandbox Code Playgroud)
我试图在库中的任意正则表达式上模拟这种行为.这是我的代码.
Cargo.toml(相关部分)
[dependencies]
regex = "0.1"
Run Code Online (Sandbox Code Playgroud)
lib.rs
extern crate regex;
pub mod tokenize;
Run Code Online (Sandbox Code Playgroud)
记号化/ mod.rs
extern crate regex;
pub mod util;
Run Code Online (Sandbox Code Playgroud)
记号化/ util.rs
extern crate regex;
use regex::Regex;
pub fn regexp_span_tokenize(s: &str, regexp: regex::Regex) -> Vec<(i32, i32)> {
return regexp.unwrap().find_iter(s);
}
Run Code Online (Sandbox Code Playgroud)
当我发出时cargo build,我收到以下错误:
tokenize/util.rs:38:19: 38:27 …Run Code Online (Sandbox Code Playgroud) 我用方法创建了一个类,它返回对成员的引用(封装不好)。我正在使用自动重新调整功能
class classA
{
public:
classA(classA & rhs)
{
cout<<"copy constr A"<<endl;
};
classA() = default;
};
class classB
{
private:
classA obA;
public:
classA& getRefA(){return obA;}
};
int main()
{
classB obB;
auto ob = obB.getRefA();
}
Run Code Online (Sandbox Code Playgroud)
结果是复制构造A
我知道 auto 不会检测函数的引用。自动检测是否只检测类型而不参考?
有一个对象列表并按每个对象调用一个函数,但是canot保留了上下文,例如:
std::list<Ob> objs;
Ob ob;
ob.settings(/*...*/);
objs.push_back(ob);
/*...*/
for (Ob obj : objs)
{
obj.increase();
}
Run Code Online (Sandbox Code Playgroud)
该increase()函数总结一个局部变量,例如:
class Ob
{
private:
int a = 0;
Run Code Online (Sandbox Code Playgroud)
而......
Ob::increase(){ this->a++; }
Run Code Online (Sandbox Code Playgroud)
但a只增加内循环,如果调用10次canot保持最后一个值.
如何保持对象的上下文?