'foo' 未在此范围内声明 c

我刚刚学习 c(自从几年前参加为期一周的夏令营以来第一天看到它) 我正在将我正在使用 Java 编写的程序转换为 C : #ifndef ADD_H #define ADD_H #define _USE_MATH_DEFINES #include <iostream> #include <math.h> using namespace std; class Evaluatable { public: virtual double evaluate(double x); }; class SkewNormalEvalutatable : Evaluatable{ public: SkewNormalEvalutatable(); double evaluate(double x){ return 1 / sqrt(2 * M_PI) * pow(2.71828182845904523536, -x * x / 2); } }; SkewNormalEvalutatable::SkewNormalEvalutatable() { } double getSkewNormal(double skewValue, double x) { SkewNormalEvalutatable e (); return 2 / sqrt(2 * M_PI) * pow(2....

“闭包”和“lambda”有什么区别?

有人可以解释一下吗? 现在我们已经到了这里,它们与常规函数有何不同? 答案 Aλ只是一个匿名函数 - 一个没有名称定义的函数。 A关闭 是任何函数结束 这环境其中定义了它。 def func(): return h def anotherfunc(h): return func() 这会导致错误,因为func才不是关闭 环境在anotherfunc-h未定义。func仅关闭全球环境。 def anotherfunc(h): def func(): return h return func() 因为在这里,func定义于anotherfunc,并且在 python 2.3 及更高版本(或类似这样的数字)中,当它们几乎 闭包正确(突变仍然不起作用),这意味着它结束 anotherfunc的环境并可以访问其中的变量。这nonlocal关键词。 另一个重要的一点——func将继续关闭anotherfunc的环境,即使它不再被评估anotherfunc。 def anotherfunc(h): def func(): return h return func print anotherfunc(10)() 这将打印 10。 正如您所注意到的,这与拉姆达s - 它们是两个不同(尽管相关)的概念。 来自: stackoverflow.com

“不能用作函数错误”

我正在编写一个简单的程序,该程序使用在不同.cpp文件中发现的函数。我的所有原型都包含在标题文件中。我将一些功能传递到其他功能中,不确定我是否正确地执行了功能。我得到的错误是*"‘functionName’不能用作函数"* 。growthRate功能和estimatedPopulation功能。数据通过输入函数(我认为这是在起作用)。 谢谢! header file: #ifndef header_h #define header_h #include <iostream> #include <iomanip> #include <cstdlib> using namespace std; //prototypes void extern input(int&, float&, float&, int&); float extern growthRate (float, float); int extern estimatedPopulation (int, float); void extern output (int); void extern myLabel(const char *, const char *); #endif growthRate function: #include "header.h" float growthRate (float birthRate, float deathRate, float growthrt) { growthrt = ((birthRate) - (deathRate)) return growthrt; } estimatedPopulation function:...

“参数”与“参数”

我有范围 和争论有点混乱,并没有真正注意何时使用其中一种,何时使用另一种。 你能告诉我吗? 答案 参数是作为方法签名(方法声明)一部分的变量。 考虑以下代码: void Foo(int i, float f) { // Do things } void Bar() { int anInt = 1; Foo(anInt, 2.0); } 这里i和f是参数,并且anInt和2.0是论据。 来自: stackoverflow.com

“函数”和“过程”有什么区别?

一般来说,我们都听说过功能 或者程序在编程语言中。但是,我只是发现我几乎可以互换使用这些术语(这可能是非常错误的)。 所以,我的问题是: 在其功能,目的和使用方面有什么区别? 一个例子将不胜感激。 答案 一个函数返回值,并且一个过程仅执行命令。 名称函数来自数学。它用于根据输入计算值。 一个过程是一组可以按顺序执行的命令。 在大多数编程语言中,即使函数也可以具有一组命令。因此,差异只是返回值。 但是,如果您想保持功能清洁(只需查看功能语言),则需要确保功能没有副作用。 来自: stackoverflow.com

“矩阵是否包含值 X?”的函数

MATLAB 是否有内置函数来查找矩阵是否包含某个值? in_array()) 答案 有很多方法可以做到这一点。 X = primes(20); ismember([15 17],X) ans = 0 1 由于 15 不是素数,但 17 是,ismember 在这里很好地完成了它的工作。 当然,find(或any)也可以。 ~isempty(find(X == 15)) ~isempty(find(X == 17)) 或者, any(X == 15) any(X == 17) 最后,我想指出,如果数字可能是真正的浮点数,那么对精确值的测试是危险的。 tol = 10*eps; any(abs(X - 3.1415926535897932384) <= tol) 来自: stackoverflow.com

“无法在查询内执行DML操作”的解决方案?

我正在使用数据分析工具,我的要求是接受用户的值,将其作为参数传递并将其存储在表中。 create or replace procedure complex(datainput in VARCHAR2) is begin insert into dumtab values (datainput); end complex; 我执行了这个SQL Developer使用以下语句 begin complex('SomeValue'); end; 它工作正常,并且该值已插入到表中。 create or replace function supercomplex(datainput in VARCHAR2) return varchar2 is begin insert into dumtab values (datainput); return 'done'; end supercomplex; 我再次尝试执行它SQL Developer ,但我得到了cannot perform a DML operation inside a query执行以下代码后 select supercomplex('somevalue') from dual; 我的问题是 - 我需要一个可以运行上述函数的语句SQL Developer或者 - 可以执行我正在寻找的功能的函数,可以通过 select 语句执行。 附: EDIT 我需要在 SQL Developer 上运行该函数,因为在 DMine(该工具)中运行它之前,为了测试它是否有效。...

“正确”在r函数中指定可选参数的方法

我对在R中使用可选论点编写功能的"正确"的方法感兴趣。随着时间的流逝,我偶然发现了一些在这里采用不同路线的代码,但找不到适当的(官方)位置关于这个话题。 到目前为止,我已经写了这样的可选论点: fooBar <- function(x,y=NULL){ if(!is.null(y)) x <- x+y return(x) } fooBar(3) # 3 fooBar(3,1.5) # 4.5 该函数仅返回其参数x提供。它使用默认NULL对于第二个参数的价值,如果该论点恰好不是NULL,然后添加两个数字。 另外,可以这样写这样的函数(其中第二个参数需要按名称指定,但也可以unlist(z)或定义z <- sum(...)反而): fooBar <- function(x,...){ z <- list(...) if(!is.null(z$y)) x <- x+z$y return(x) } fooBar(3) # 3 fooBar(3,y=1.5) # 4.5 我个人更喜欢第一个版本。但是,我可以看到两者的好坏。第一个版本不易出错,但是第二个版本可用于合并任意数量的选项。 是否有一种"正确"的方法来指定R中的可选参数?到目前为止,我已经解决了第一种方法,但两者都有偶尔会感到有些" hacky"。 答案 你也可以使用missing()测试该论点是否y被提供: fooBar <- function(x,y){ if(missing(y)) { x } else { x + y } } fooBar(3,1.5) # [1] 4.5 fooBar(3) # [1] 3 来自: stackoverflow.com

= = delete声明后删除的含义

class my_class { ... my_class(my_class const &) = delete; ... }; 有什么= delete在这种情况下的意思? 还有其他"修饰符"(除了= 0和= delete)? 答案 删除功能是C ++ 11功能: 现在可以直接表示"禁止复制"的常见成语: class X { // ... X& operator=(const X&) = delete; // Disallow copying X(const X&) = delete; }; […] “删除"机制可用于任何功能。例如,我们可以消除这样的不希望的转换: struct Z { // ... Z(long long); // can initialize with an long long Z(long) = delete; // but not anything less }; 来自: stackoverflow.com

$ http.get(...)。成功不是功能

我有此代码: app.controller('MainCtrl', function ($scope, $http){ $http.get('api/url-api') .success(function (data, status, headers, config){ } } 在我的本地环境中,可以正常工作,但是在服务器中,返回此错误: TypeError:$ http.get(…)。成功不是功能 有任何想法吗?谢谢 答案 这.success语法是正确的,直至Angular V1.4.3。 对于Angular v.1.6的版本,您必须使用then方法。这then()方法需要两个参数:success和error回答将用响应对象调用。 使用then()方法,附加callback返回的功能promise。 这样的事情: app.controller('MainCtrl', function ($scope, $http){ $http({ method: 'GET', url: 'api/url-api' }).then(function (response){ },function (error){ }); } 请参阅参考这里。 Shortcut也可以使用方法。 $http.get('api/url-api').then(successCallback, errorCallback); function successCallback(response){ //success code } function errorCallback(error){ //error code } 您从响应中获得的数据预计将进入JSON格式。JSON 是运输的好方法data ,并且很容易在内部使用AngularJS 2之间的主要区别是.then()呼叫返回apromise(以从一个返回的值解决callback) 尽管.success()是更传统的注册方式callbacks并且不返回promise。 来自: stackoverflow.com

apply_filters(...) 在 WordPress 中实际上做了什么?

我试图了解 WordPress 中的一些功能,但我无法理解它们的含义应用过滤器(…)事实上确实如此。 有人能用几个例子帮我澄清这个问题吗? 答案 apply_filters($tag, $value)将"value"参数传递给每个"hooked"函数(使用add_filter)到指定的过滤器"标签"中。 例如,默认情况下(在 WordPress 2.9 中)the_contentfilter 通过以下函数序列传递值: 纹理化 转换表情符号 转换字符 WP自动操作 简码_unautop 前置附件 do_短代码 来自: stackoverflow.com

BASH功能中的返回和退出之间的区别

有什么区别return和exitbash功能中有关退出代码的声明? 答案 从man bash在return [n]; 导致函数停止执行并将N指定的值返回其呼叫者。如果省略n,则返回状态是函数主体中执行的最后一个命令的状态。 … 在exit [n]: 使外壳以n的状态退出。如果省略n,则退出状态是执行的最后一个命令的状态。在壳终止之前,执行出口上的陷阱。 EDIT: 根据您对问题的编辑,有关退出代码,return与出口代码无关。出口代码用于applications/scripts ,不是功能。因此,在这方面,唯一设置了脚本的退出代码的关键字(使用该脚本捕获的密码可以使用呼叫程序捕获$?壳变量)是exit。 EDIT 2: 我的最后一个陈述指的是exit正在引起一些评论。它是为了区分的return和exit为了理解OP,实际上是在任何 给定的程序/shell脚本的点,exit是用退出代码结束脚本到调用过程的唯一方法。 外壳中执行的每个命令都会产生本地的"退出代码":它设置$?该代码可变,可以与if,,,,&&和其他操作员有条件执行其他命令。 这些退出代码(以及$?每个命令执行重置变量)。 顺便说一下,脚本执行的最后一个命令的退出代码被用作脚本本身的退出代码,如呼叫过程所示。 最后,当调用时,功能是相对于退出代码的外壳命令。功能的退出代码(之内 通过使用return。因此,当功能中return 0运行,函数执行将终止,给出0的退出代码。 来自: stackoverflow.com

bash函数中的返回值

我正在使用bash脚本,我想执行一个函数来打印返回值: function fun1(){ return 34 } function fun2(){ local res=$(fun1) echo $res } 当我执行时fun2,它不打印" 34"。为什么这样? 答案 虽然bash有一个return语句,您唯一可以用它指定的是函数自己的exit状态(之间的值0和255,0表示"成功")。所以return不是你想要的。 您可能想转换您的return向An的声明echo语句 - 可以使用您的功能输出来使用$()牙套,这似乎正是您想要的。 这是一个示例: function fun1(){ echo 34 } function fun2(){ local res=$(fun1) echo $res } 获取返回值的另一种方法(如果您只想返回整数0-255)是$?。 function fun1(){ return 34 } function fun2(){ fun1 local res=$? echo $res } 另外,请注意,您可以使用返回值来使用布尔逻辑 - 喜欢fun1 || fun2只会运行fun2如果fun1返回非 - 0价值。默认返回值是在函数中执行的最后一个语句的退出值。 来自: stackoverflow.com

bash中的递归功能

我想执行一个函数,该功能将返回bash中的数字的阶乘 这是当前不起作用的代码,谁能告诉我怎么了,如何纠正它?我刚刚开始学习bash,但我不知道这么多。 #!/bash/bin factorial() { let n=$1 if (( "$n" <= "1" )) then return 1 else factorial n-1 return $n*$? fi return 0 } factorial 5 echo "factorial 5 = $?" 答案 有几种语法和一个很明显的逻辑(返回0) 工作版本如下: #!/bin/bash factorial() { if (( $1 <= 1 )); then echo 1 else last=$(factorial $(( $1 - 1 ))) echo $(( $1 * last )) fi } factorial 5 您缺少: 返回不好(应该使用echo) shbang Line(IS /bin /bash not /bash /bin)...

C

我需要帮助与C using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Add_Function { class Program { static void Main(string[] args) { int a; int b; int c; Console.WriteLine("Enter value of 'a':"); a = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter value of 'b':"); b = Convert.ToInt32(Console.ReadLine()); //why can't I not use it this way? c = Add(a, b); Console.WriteLine("a + b = {0}", c); }//END Main public int Add(int x, int y) { int result = x + y; return result; }//END Add }//END Program }//END Add_Function 它在我调用 Add() 的行上给了我这个错误:...