我有以下问题:我有一个函数,它以List [Double]作为参数,对列表的元素执行一些算术运算,然后返回结果.我希望该函数也接受List [Int].这是一个例子:
def f(l: List[Double]) = {
var s = 0.0
for (i <- l)
s += i
s
}
val l1 = List(1.0, 2.0, 3.0)
val l2 = List(1, 2, 3)
println(f(l1))
println(f(l2))
Run Code Online (Sandbox Code Playgroud)
当然第二个println失败,因为f需要List [Double]而不是List [Int].
还要注意f函数中和的非scala样式公式,以证明需要在函数本身内使用0(或其他常量)(如果我将Int值与init s s相加而不是0.0.
哪个是使函数在Double和Int上运行的最佳方法(更少的代码)?
(我已经看到一些关于2.8数字特性的东西,我不太确定如何使用它......)
谢谢大家的帮助.
我在整个代码中的几个地方都调用了日志记录功能.对于每个日志,我必须提供2个编译时常量.有两种方法可以完成:
(1)函数参数:
template<typename T>
void log (const T &obj, const int LINE, const int COUNT)
{
// T is used for some purpose
if(debug)
logging(obj.out(), LINE, COUNT);
}
Run Code Online (Sandbox Code Playgroud)
称之为,
log(str, __LINE__, __COUNTER__);
Run Code Online (Sandbox Code Playgroud)
(2)模板参数:
template<typename T, int LINE, int COUNT>
void log (T &obj)
{
// T is used for some purpose
if(debug)
logging(obj.out(), LINE, COUNT);
}
Run Code Online (Sandbox Code Playgroud)
称之为,
log<__LINE__, __COUNTER__>(str);
Run Code Online (Sandbox Code Playgroud)
我无法决定,因为第一种方法提供了简单性,但我们在编译时传递不变.第二种方法是完美的,但编译时间可能会增加.这个任务很繁琐,我还没有实现任何一个,所以我没有任何基准.
如果有人能够从他们的经验/知识中回答这个问题,那将是一个很大的帮助.
昨天在解决这个问题时,我发现了一个奇怪的情况,即传递和接收未命名的结构作为函数参数。
例如,如果我有这样的结构,
int main ()
{
struct {
int a;
} var;
fun(&var);
}
Run Code Online (Sandbox Code Playgroud)
现在,原型应该是什么fun?我如何将该结构用作函数中的结构(指针)fun?
我将进行一系列实验.评估的主要方法具有以下特征:
[Model threshold] = detect(...
TrainNeg, TrainPos, nf, nT, factors, ...
removeEachStage, applyEstEachStage, removeFeatures);
Run Code Online (Sandbox Code Playgroud)
在哪里removeEachStage,applyEstEachStage和,removeFeatures是布尔.你可以看到,如果我颠倒任何这些布尔参数的顺序,我可能会得到错误的结果.
MATLAB中是否有一种方法可以更好地组织,以最大限度地减少这种错误?或者,我可以使用任何工具来保护我免受这些错误的影响吗?
我偶然发现了一个好奇的函数签名pg_catalog.pg_stat_get_activity:
CREATE OR REPLACE FUNCTION pg_stat_get_activity(
IN pid integer,
OUT datid oid,
OUT pid integer,
-- more parameters...)
RETURNS SETOF record AS 'pg_stat_get_activity'
LANGUAGE internal STABLE
COST 1
ROWS 100;
Run Code Online (Sandbox Code Playgroud)
此函数声明两次相同的参数名称,也会从中报告information_schema.
select
parameter_mode,
parameter_name
from information_schema.parameters
where specific_schema = 'pg_catalog'
and specific_name like 'pg_stat_get_activity%'
order by ordinal_position
Run Code Online (Sandbox Code Playgroud)
上面的产量(另见这个SQLFiddle):
+--------------+----------------+
|parameter_mode|parameter_name |
+--------------+----------------+
|IN |pid |
|OUT |datid |
|OUT |pid |
|... |... |
+--------------+----------------+
Run Code Online (Sandbox Code Playgroud)
天真地,我尝试创建一个类似的功能,但没有用:
CREATE FUNCTION f_2647(p1 IN int, p1 OUT int) …Run Code Online (Sandbox Code Playgroud) 我想在C++上创建一个很好的接口,每个实现都需要在其上定义添加.
我想做这样的事情:
class A{
...
virtual A& operator+(const A& other) =0;
...
}
// this is my interface or abstract class.
class B : A{
...
B& operator+(const B& other);
...
}
// this is the kind of implementation i would like. a B element can be added by another B element only ! At least this the constraint I am aiming at.
Run Code Online (Sandbox Code Playgroud)
因为c ++不接受逆变,我的功能B& operator+(const B& other)没有实现virtual A& operator+(const A& other).有没有什么棘手的(但有点干净......)方法呢?
我决定学习节点,所以我正在关注,首先是节点初学者书.正如在我猜的其他许多资源中,有"简单的HTTP服务器",第一步,如:
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
Run Code Online (Sandbox Code Playgroud)
据我了解,当有人(在这种情况下,我localhost:8888)提出请求时,会触发一个事件,并且传递给的匿名函数http.createServer会被触发.我在这里放了一些我已经设法找到的文件http.createserver给任何发现它有用的人:
http.createServer([requestListener])
返回一个新的Web服务器对象.
requestListener是一个自动添加到'request'事件的函数.
(来自node.js网站)
我无法找到或弄清楚这个触发函数如何通过它传递参数,以及如何找到它.那么......我怎么知道这些参数来自哪里,它们提供什么方法等等?
提前致谢!
请考虑以下代码段:
void foo(int a[], int b[]){
static_assert(sizeof(a) == sizeof(int*));
static_assert(sizeof(b) == sizeof(int*));
b = a;
printf("%d", b[1]);
assert(a == b); // This also works!
}
int a[3] = {[1] = 2}, b[1];
foo(a, b);
Run Code Online (Sandbox Code Playgroud)
输出(无编译错误):
2
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么b = a有效.即使数组可能衰减到指针,它们是否应该衰减到const指针(T * const)?
基本上是这样的:
DEFAULT_TIMEOUT = 10
# or even: from my_settings import DEFAULT_TIMEOUT
def get_google(timeout=DEFAULT_TIMEOUT):
return requests.get('google.com', timeout=timeout)
Run Code Online (Sandbox Code Playgroud)
我认为只要常数确实保持不变,就应该可以正常工作。但我有时会看到这样的模式:
DEFAULT_TIMEOUT = 10
def get_google(timeout=None):
if timeout is None:
timeout = DEFAULT_TIMEOUT
return requests.get('google.com', timeout=timeout)
Run Code Online (Sandbox Code Playgroud)
这些是等效的还是我应该更喜欢其中一个?
环境
适用于 Linux 的 Visual Studio Code 1.25(ubuntu 16.04)。
主题 VisualStudio 黑暗。
目前我在 Ubuntu 16.04 中使用 Visual Studio 代码 1.25 来编写 C++ 代码。我想更改函数参数的颜色,就像在 Visual Studio 2015 中一样,它们在函数声明和函数体中都是灰色的。我试图通过使用以下用户设置来实现这一点:
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": "variable.parameter",
"settings": {
"fontStyle": "",
"foreground":"#413f39"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
但没有成功。是我做错了什么还是 vs 代码不支持这个功能?