Tag: 函数

Rails助手应该假设一个实例variables是否存在,或者他们是否应该接收它们作为参数?

我想知道是否有一个特定的编程原则(Demeter?)支持Rails助手不应该使用控制器实例variables的想法,相反,他们应该接受这样的variables作为函数参数。 例如,假设我的ChickensController#squawk动作创build一个名为@egg的实例variables。 此外,假设squawk视图包含一个名为cockadoodledoo的助手的调用,实现如下: def cockadoodledoo @egg.to_s end 将@egg作为parameter passing@egg这个视图会调用cockadoodledoo(@egg)并且该帮助器类似于: def cockadoodledoo(egg) egg.to_s end 我希望你们中的一个快乐的黑客在星期五的下午已经够无聊了。 Cockadoodledoo! 这个问题是类似的,但从来没有准确的答案。

内联函数 – 与inline关键字完全相同的是什么?

在这个链接中 ,解释了什么是内联函数,什么是内联关键字。 我正在阅读,因为我意识到我从来没有理解这两个概念的含义,以及如何在实践中使用它们。 我从我提供的链接引用和评论 内联函数或内联variables(自C ++ 17以来)是具有以下属性的函数或variables(自C ++ 17以来): 1)只要每个定义出现在不同的翻译单元中,程序中可能有多个内联函数或variables(自C ++ 17以来)的定义。 例如,可以在包含在多个源文件中的头文件中定义内联函数或内联variables(因为C ++ 17)。 这里我已经理解了问题,声明就是新标识符的说明 void func(void); 而定义是包括实体在内的实际实现 void func(void) { //some code… } 1)意味着我可以给不同的实现,只要他们在不同的翻译单位(即每个源文件每头e一个实现),但我很困惑的情况下,我有一个源文件source.cc与一个func声明和一个头文件与另一个func声明的翻译单元是source.cc+header.h ,在这种情况下声明了两次func没有任何意义,对吗? 2)内联函数或variables(自C ++ 17以来)的定义必须存在于被访问的翻译单元中(不一定在访问点之前)。 这是通常的情况下,我把声明和头文件中的第一个分开,第二个是在源文件中,如果我需要使用函数,我只需要包含头部权限? 访问点将在链接阶段由源提供,是正确的? 3)具有外部链接(例如未声明为静态)的内联函数或variables(自C ++ 17以来)具有以下附加属性:1)必须在每个翻译单元中内联声明。 2)每个翻译单元都有相同的地址。 你能提供一个简单的例子吗? 我无法想象这种情况的实际情况。 情况3)指出,除非要声明的函数是静态的,否则关键字inline是强制性的。 我所说的一切到目前为止是正确的? 实际上,一个函数应该是内联的,当这样一个函数非常小的时候,但并不总是编译器会内联声明为内联的函数,例如,如果它有循环内部或recursion(Effective C ++ states)。 一般来说,这是编译器依赖,我现在奇迹… 假设我有两个函数,第一个函数是自包含的(它不会在内部调用任何其他函数),第二个函数是第一个函数(为了参数,您可以假设它们都是10行)。 他们是否应该在线声明? 他们应该在头文件中声明? 或者我应该分开头文件中的定义和源文件中的实现? 什么会更好? 编辑1 : 下面的答案之一是更好的,如果我通过例子工作,与相关的汇编代码分析。 我删除了以前的代码,因为它没有意义( -O3标志优化没有设置)。 […]

C ++重载parsing

给出下面的例子,为什么我必须明确地使用语句b->A::DoSomething()而不仅仅是b->DoSomething() ? 编译器的重载决议不应该找出我正在谈论的方法吗? 我正在使用Microsoft VS 2005.(注意:在这种情况下使用虚拟不起作用。) class A { public: int DoSomething() {return 0;}; }; class B : public A { public: int DoSomething(int x) {return 1;}; }; int main() { B* b = new B(); b->A::DoSomething(); //Why this? //b->DoSomething(); //Why not this? (Gives compiler error.) delete b; return 0; }

用于Mac OS X的类似readelf的工具?

是否有一个读取Mac OS X二进制文件的工具,可以打印有关重新定位表和符号偏移的信息,类似于这个readelf输出? readelf -r app Relocation section '.rel.dyn' at offset 0x5ec contains 2 entries: Offset Info Type Sym.Value Sym. Name 08049d58 00001706 R_386_GLOB_DAT 00000000 __gmon_start__ 08049d60 00000305 R_386_COPY 08049d60 _ZSt4cout Relocation section '.rel.plt' at offset 0x5fc contains 13 entries: Offset Info Type Sym.Value Sym. Name 08049d24 00000107 R_386_JUMP_SLOT 0804868c print 08049d28 00000207 R_386_JUMP_SLOT 0804869c […]

C函数与Objective-C方法?

两者有什么区别? 如果我正在编写一个程序,我什么时候需要这个: void aFunction() { //do something } 什么时候我需要这个: -(void)aMethod { //do something else }

为什么我应该重载方法?

我在我的重载方法书中发现了两个例子,但是它并没有清楚地解释为什么它是有用的: package keepo; public class Main{ public static void main(String [] args) { int newScore = calculateScore("Tim", 500); System.out.println("New Score is" + newScore); calculateScore(75); } public static int calculateScore(String playerName, int score){ System.out.println("Player" + playerName +"Has score" + score); return score * 1000; } public static int calculateScore(int score){ System.out.println("Unnamed player scored" + score + […]

调用未定义的函数:simplexml_load_string()

我正在执行使用cron文件的Facebook计数function。 哪个cron每10分钟运行一次,并计算一个页面的总数。 for($i=0;$i<3;$i++){ $source_url =$cars[$i]; $rest_url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($source_url); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL,$rest_url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $content = curl_exec($curl); curl_close($curl); $message=stripslashes($content); $xml_record = simplexml_load_string($message); $fb_like_count = $xml_record->link_stat->like_count; echo "".$fb_like_count; mail("abc@gmail.com","hi".$fb_like_count,$message); } 但我geting未定义的调用函数错误。

为什么应该更喜欢call_user_func_array通常的调用函数?

function foobar($arg, $arg2) { echo __FUNCTION__, " got $arg and $arg2\n"; } foobar('one','two'); // OUTPUTS : foobar got one and two call_user_func_array("foobar", array("one", "two")); // // OUTPUTS : foobar got one and two 正如我可以看到普通的一个和call_user_func_array方法都输出相同的,那么为什么要喜欢它? 在哪种情况下,普通调用方法会失败,但call_user_func_array不会? 我能得到这样的例子吗? 谢谢

在函数名称后的参数与const之前的const c ++

这样的事情有什么区别? friend Circle copy(const Circle &); 和这样的事情 friend Circle copy(Circle&) const; 我知道const函数用于告诉编译器,这个函数不会试图改变它被调用的对象,另一个呢?

反转string而不使用反转()或?

我遇到了一个奇怪的Codecademy练习,需要一个函数,将string作为input,并以相反的顺序返回。 唯一的问题是你不能在这里使用颠倒的方法或常用的答案, [::-1] 。 显然,在编程的真实世界中,人们很可能会使用扩展分片方法,或者甚至使用reversed函数,但是在某些情况下这可能不起作用。 我在下面以问答forms提出了一个解决scheme,以防将来对人们有帮助。