我需要确定一个给定的字符串是否可以解释为SQL语句中的数字(整数或浮点).如下所示:
SELECT AVG(CASE WHEN x ~ '^[0-9]*.?[0-9]*$' THEN x::float ELSE NULL END) FROM test
Run Code Online (Sandbox Code Playgroud)
我发现Postgres的模式匹配可以用于此.所以我调整了这个地方给出的语句来合并浮点数.这是我的代码:
WITH test(x) AS (
VALUES (''), ('.'), ('.0'), ('0.'), ('0'), ('1'), ('123'),
('123.456'), ('abc'), ('1..2'), ('1.2.3.4'))
SELECT x
, x ~ '^[0-9]*.?[0-9]*$' AS isnumeric
FROM test;
Run Code Online (Sandbox Code Playgroud)
输出:
x | isnumeric
---------+-----------
| t
. | t
.0 | t
0. | t
0 | t
1 | t
123 | t
123.456 | t
abc | f
1..2 | f
1.2.3.4 …
Run Code Online (Sandbox Code Playgroud) 请考虑以下声明:
vector<vector<int> > v2d;
vector<vector<vector<string>> > v3d;
Run Code Online (Sandbox Code Playgroud)
如何在后续代码中找出向量的"维度"?例如,v2d为2,v3d为3?
在Python中,None
评估小于零?
ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> None < 0
True
>>> None == 0
False
>>> None > 0
False
>>>
Run Code Online (Sandbox Code Playgroud)
这是预期的吗?
我猜想这None
将等于零(通过类型强制),或者所有这些语句都会返回False
.
现在我已经熟悉了C和C标准库,我想知道当我转向以后使用C++时,我在这方面的知识是否有用.
因此,我想知道,我是否可以在C++设置中使用C标准库提供的功能,以及是否以及为什么实际这样做是有意义的.
是否有人知道C++中的语言特性或技术,以防止子类过度使用父类中的特定方法?
class Base {
public:
bool someGuaranteedResult() { return true; }
};
class Child : public Base {
public:
bool someGuaranteedResult() { return false; /* Haha I broke things! */ }
};
Run Code Online (Sandbox Code Playgroud)
尽管它不是虚拟的,但仍然允许这样做(至少在我正在使用的Metrowerks编译器中),所有你得到的是关于隐藏非虚拟继承函数X的编译时警告.
Python的itertools实现了一个链迭代器,它基本上连接了许多不同的迭代器,以提供单个迭代器的所有东西.
C++中有类似的东西吗?快速浏览一下boost库并没有发现类似的东西,这对我来说非常令人惊讶.难以实现此功能吗?
我编写了一个脚本,将消息写入文本文件,并将其作为电子邮件发送.一切顺利,除了电子邮件似乎总是在一行.
我添加换行符\n
,它适用于文本文件,但不适用于电子邮件.你知道可能的原因是什么吗?
这是我的代码:
import smtplib, sys
import traceback
def send_error(sender, recipient, headers, body):
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
session = smtplib.SMTP('smtp.gmail.com', 587)
session.ehlo()
session.starttls()
session.ehlo
session.login(sender, 'my password')
send_it = session.sendmail(sender, recipient, headers + "\r\n\r\n" + body)
session.quit()
return send_it
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
sender = 'sender_id@gmail.com'
recipient = 'recipient_id@yahoo.com'
subject = 'report'
body = "Dear Student, \n Please send your report\n Thank you for your attention"
open('student.txt', 'w').write(body)
headers = ["From: " + sender, …
Run Code Online (Sandbox Code Playgroud) 什么是更好的做法?
self.call(1, True, "hi")
Run Code Online (Sandbox Code Playgroud)
要么
self.call(1, True, "hi",)
Run Code Online (Sandbox Code Playgroud)
以下情况如下:
self.call(
1,
True,
"hi"
)
Run Code Online (Sandbox Code Playgroud)
要么
self.call(
1,
True,
"hi",
)
Run Code Online (Sandbox Code Playgroud)
?
在数据结构中添加尾随逗号的原因对我来说很熟悉,但是函数调用呢?
在回答这个问题的时候,据说是这样的
int是默认构造为0,就像用int()初始化它们一样.其他原始类型被类似地初始化(例如,double(),long(),bool()等).
就在我向我的同事解释这个时,我编写了以下代码,编译(gcc-4.3.4)并运行,并观察到意外行为.
#include <iostream>
int main() {
int i();
std::cout << i << std::endl; // output is 1
}
Run Code Online (Sandbox Code Playgroud)
为什么是输出1
,但0
?
请考虑以下代码.
std::vector<result_data> do_processing()
{
pqxx::result input_data = get_data_from_database();
return process_data(input_data);
}
std::vector<result_data> process_data(pqxx::result const & input_data)
{
std::vector<result_data> ret;
pqxx::result::const_iterator row;
for (row = input_data.begin(); row != inpupt_data.end(); ++row)
{
// somehow populate output vector
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
当我在考虑是否可以期待返回值优化(RVO)时,我发现Jerry Coffin的这个答案 [强调我的]:
至少IMO,这通常是一个糟糕的主意,但不是出于效率原因.这是一个糟糕的主意,因为有问题的函数通常应该写成通过迭代器生成输出的通用算法.几乎任何接受或返回容器而不是在迭代器上运行的代码都应该被认为是可疑的.
不要误解我的意思:有时候传递类似于集合的对象(例如字符串)是有意义的,但对于引用的例子,我会考虑传递或返回向量一个糟糕的想法.
有一些Python背景,我非常喜欢Generators.实际上,如果它是Python,我会把上面的函数写成一个Generator,即避免在其他任何事情发生之前处理整个数据的必要性.例如这样:
def process_data(input_data):
for item in input_data:
# somehow process items
yield result_data
Run Code Online (Sandbox Code Playgroud)
如果我正确地解释了Jerry Coffins的说法,这就是他的建议,不是吗?如果是这样,我如何在C++中实现它?
c++ ×6
python ×3
iterator ×2
c ×1
coding-style ×1
coroutine ×1
email ×1
function ×1
generator ×1
metrowerks ×1
overriding ×1
postgresql ×1
python-2.7 ×1
python-2.x ×1
regex ×1
smtplib ×1
vector ×1