标签: function-parameter

scala方法定义函数接受不同数字类型的List

我有以下问题:我有一个函数,它以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数字特性的东西,我不太确定如何使用它......)

谢谢大家的帮助.

scala function-parameter scala-2.8

6
推荐指数
1
解决办法
5181
查看次数

哪种方法更适合为函数提供编译时常量?函数参数与模板参数

我在整个代码中的几个地方都调用了日志记录功能.对于每个日志,我必须提供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)

我无法决定,因为第一种方法提供了简单性,但我们在编译时传递不变.第二种方法是完美的,但编译时间可能会增加.这个任务很繁琐,我还没有实现任何一个,所以我没有任何基准.

如果有人能够从他们的经验/知识中回答这个问题,那将是一个很大的帮助.

c++ comparison templates function-parameter

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

如何在 C 中接收未命名结构作为函数参数?

昨天在解决这个问题时,我发现了一个奇怪的情况,即传递和接收未命名的结构作为函数参数。

例如,如果我有这样的结构,

int main ()
{
    struct {
        int a;
    } var;

    fun(&var);
}
Run Code Online (Sandbox Code Playgroud)

现在,原型应该是什么fun?我如何将该结构用作函数中的结构(指针)fun

c struct function-parameter function-prototypes

6
推荐指数
1
解决办法
2478
查看次数

MATLAB:有没有一种方法可以更好地组织实验功能?

我将进行一系列实验.评估的主要方法具有以下特征:

[Model threshold] = detect(...
    TrainNeg, TrainPos, nf, nT, factors, ...
    removeEachStage, applyEstEachStage, removeFeatures);
Run Code Online (Sandbox Code Playgroud)

在哪里removeEachStage,applyEstEachStage和,removeFeatures是布尔.你可以看到,如果我颠倒任何这些布尔参数的顺序,我可能会得到错误的结果.

MATLAB中是否有一种方法可以更好地组织,以最大限度地减少这种错误?或者,我可以使用任何工具来保护我免受这些错误的影响吗?

matlab arguments function function-parameter

6
推荐指数
1
解决办法
552
查看次数

具有重复参数的PostgreSQL函数

我偶然发现了一个好奇的函数签名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)

sql postgresql stored-procedures plpgsql function-parameter

6
推荐指数
1
解决办法
460
查看次数

抽象类的逆差异

我想在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).有没有什么棘手的(但有点干净......)方法呢?

c++ abstract-class contravariance function-parameter

6
推荐指数
2
解决办法
215
查看次数

"请求"和"响应"来自何处,我怎么能找到?

我决定学习节点,所以我正在关注,首先是节点初学者书.正如在我猜的其他许多资源中,有"简单的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网站)

我无法找到或弄清楚这个触发函数如何通过它传递参数,以及如何找到它.那么......我怎么知道这些参数来自哪里,它们提供什么方法​​等等?

提前致谢!

javascript events backend function-parameter node.js

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

为什么可以直接分配数组?

请考虑以下代码段:

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)?

c arrays variable-assignment function-parameter

5
推荐指数
3
解决办法
366
查看次数

在Python中可以使用模块常量作为默认函数参数吗?

基本上是这样的:

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)

这些是等效的还是我应该更喜欢其中一个?

python function function-parameter

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

如何在 Visual Studio 代码 C++ 中更改函数参数的颜色?

环境

  • 适用于 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 代码不支持这个功能?

function-parameter visual-studio-code vscode-settings

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