小编Nik*_*iko的帖子

在PHP中使用foreach循环的匿名数组

我想知道PHP如何处理匿名数组,如果我像这样使用它:

foreach(array('a', 'b') as $foo) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果在每一步都重新创建数组,这将无法工作 - 但它可以工作,所以看起来PHP为该数组创建了一个变量(或类似的东西,并不重要) - 这意味着这实际上并不会有什么坏处更流畅.但有没有任何意义为什么不使用带有foreach循环的匿名数组?(它对我来说有点"看起来不对劲")

php

3
推荐指数
1
解决办法
3335
查看次数

通过点符号字符串在对象文字中设置深度?

有很多解决方案来检查/访问一个对象文字,给出一串点符号,但我需要做的是根据点符号字符串设置一个对象文字.这是非常技术性的,为什么我需要这样做,如果不可行,我会提出一个不同的解决方案.

这是我想做的事情:

var obj = { 
   'a': 1, 
   'b': 2, 
    'c': { 
      'nest': true 
    } 
};
Run Code Online (Sandbox Code Playgroud)

我想要一个可以像这样工作的函数:

setDepth(obj, 'c.nest', false);
Run Code Online (Sandbox Code Playgroud)

这会改变对象:

var obj = { 
   'a': 1, 
   'b': 2, 
    'c': { 
      'nest': false
    } 
};
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一个小时,但还没有找到一个好的解决方案.另一个帮助将非常感谢!

javascript

3
推荐指数
1
解决办法
1825
查看次数

dirname(__ FILE__)VS将全局变量设置为目录

使用它的优点和缺点是什么:

$globals['server_url'] = dirname(__FILE__);
$globals['mainfiles'] = dirname(__FILE__).'/main';
Run Code Online (Sandbox Code Playgroud)

以及使用它的利弊:

$globals['server_url'] = '/srv/www/htdocs/somwhere/';
$globals['mainfiles'] = '/srv/www/htdocs/somwhere/main';
Run Code Online (Sandbox Code Playgroud)

你有什么建议?

顺便说一句:这些都是在config.php文件中设置的,该文件也被其他文件调用,以便在包含我们使用它的文件时停止目录冲突,如下所示:

require_once($globals['server_url'].'/test.php');
Run Code Online (Sandbox Code Playgroud)

php

3
推荐指数
1
解决办法
2466
查看次数

在JavaScript中对函数对象进行别名

免责声明:我使用的是ExtJS 3,但除了常用的命名空间功能之外,我认为这与问题无关.

我有一个在一个非常长的命名空间中声明的单例,如下所示:

Ext.ns("REALLY.REALLY.LONG.NAMESPACE");

var Singleton = (function() {   
    var foo = {
        bar: "baz"
    }; 

    var privateFunction = function(param){
        // ...
        return foo;
    };

    var single = Ext.extend(Object, {
        constructor: function(config) {
            Ext.apply(this, config);
        },
        otherFunction: privateFunction,     
        publicFunction: function (someObject){
            // do stuff with someObject
        }
    });

    return single;

})();
// Make it a singleton
REALLY.REALLY.LONG.NAMESPACE.Singleton = new Singleton();
Run Code Online (Sandbox Code Playgroud)

我通过像REALLY.REALLY.LONG.NAMESPACE.Singleton.otherFunction();和的调用在其他模块中使用它REALLY.REALLY.LONG.NAMESPACE.Singleton.publicFunction(myObject);.我想知道我是否可以通过设置具有单例别名的客户端模块来交换这些调用,即var singleton = REALLY.REALLY.LONG.NAMESPACE.Singleton;,以便我可以调用singleton.otherFunction();.我想知道这是一个反模式,还是有任何陷阱(内存?)我可能会遇到这种用法.

谢谢StackOverflow!

javascript oop design-patterns extjs3

3
推荐指数
1
解决办法
1823
查看次数

添加没有任何参数的构造函数有什么好处吗?

我是C#的新手,正在MSDN阅读关于该virtual关键字的文章.在他们的示例代码中,他们创建了以下类:

public class Dimensions
{
    protected double x, y;

    public Dimensions()
    {
    }

    public Dimensions(double x, double y)
    {
        this.x = x;
        this.y = y;
    }

    public virtual double Area()
    {
        return x * y;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么他们添加第一个构造函数(不需要任何参数的构造函数)?我得到两个double值xy默认为0,因此添加此构造函数不会受到影响.但是我现在已经多次看过这个了,因此我想知道在添加这样的构造函数背后是否有任何特殊原因?我应该经常这样做吗?

c# constructor

3
推荐指数
1
解决办法
2141
查看次数

是否有充分的理由不在每个头文件中一次使用#pragma?

我是C ++的新手,开始像大多数人一样整理我的代码:在“头文件”和“源文件”中。

#pragma once在所有包含内联函数的头文件中使用。但是我想知道是否有理由反对在每个头文件中简单地使用它?

c++ pragma header-files

2
推荐指数
1
解决办法
3393
查看次数

使用数组中的参数调用函数 - apply()而不使用上下文参数?

是否有任何方法调用函数但将上下文设置为this我通过执行函数调用函数时的"默认"值fn()

这个方法应该接受一个数组并将单个元素作为参数传递给函数,就像apply()一样:

emitter = new EventEmitter();
args = ['foo', 'bar'];

// This is the desired result:
emitter.emit('event', args[0], args[1], ...);

// I can do this using apply, but need to set the context right
emitter.emit.apply(emitter, 'event', args);

// How can I trim the context from this?
emitter.emit.???('event', args);
Run Code Online (Sandbox Code Playgroud)

编辑:为了澄清这一点,我确实关心this调用函数内部的值 - 它需要是它在执行时的"正常"上下文emitter.emit(),而不是全局对象或其他任何东西.否则,这有时会破坏事情.

javascript

2
推荐指数
1
解决办法
1158
查看次数

如果另一个类的构造函数需要参数,我如何添加一个类成员?

我在C++中编写的代码不多,所以请原谅我,如果这是微不足道的话.

我的班级"Foo"看起来有点像这样:

class Foo {
    public: Foo(int n) { }
};
Run Code Online (Sandbox Code Playgroud)

另一个类"Bar"现在应该有一个类型为"Foo"的类成员.

class Bar {
    private: Foo f;
};
Run Code Online (Sandbox Code Playgroud)

这显然是失败的,因为没有"Foo"的构造函数不需要任何参数.但是,类似的东西也Foo f(1);失败了.

有什么方法可以解决这个问题吗?或者我应该在这里使用指针?

c++

2
推荐指数
1
解决办法
91
查看次数

当预期数组时,将指针传递给向量中的第一个元素是否安全?

可能重复:
我可以使用std :: vector调用带数组/指针参数的函数吗?

我最近遇到过这样的事情:

class X {
    public: void foo(float* p, int elements);
};
Run Code Online (Sandbox Code Playgroud)

=一个期望浮点值数组的方法.

但在示例代码中,这是他们使用它的方式:

std::vector<float> bar;
bar.push_back(42);
// ...

X x;
x.foo( &bar[0], (int)bar.size() );
Run Code Online (Sandbox Code Playgroud)

现在我想知道这是一种安全的方法还是恰好适用于大多数实现std::vector?(也许这是一个操作员超载的东西?我对这些东西还不是那么自信..)

c++ arrays stdvector

2
推荐指数
1
解决办法
465
查看次数

我在 Linux 上可以获得的最佳时序分辨率是多少

我正在尝试测量并行端口上 2 个信号之间的时间差,但首先我要知道我的测量系统(AMD Athlon(tm) 64 X2 双核处理器 5200+ \xc3\x97 2) 在 SUSE 12.1 x64 上。

\n\n

因此,经过一番阅读后,我决定使用clock_gettime(),首先我使用以下代码获取clock_getres()值:

\n\n
/*\n * This program prints out the clock resolution.\n */\n#include <stdio.h>\n#include <stdlib.h>\n#include <time.h>\n\nint main( void )\n  {\n    struct timespec res;\n\n    if ( clock_getres( CLOCK_REALTIME, &res) == -1 ) {\n      perror( "clock get resolution" );\n      return EXIT_FAILURE;\n    }\n    printf( "Resolution is %ld nano seconds.\\n",\n          res.tv_nsec);\n    return EXIT_SUCCESS;\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果是:1 纳秒。我很高兴!

\n\n

但这是我的问题,当我尝试用其他代码检查这一事实时:

\n\n
#include <iostream>\n#include <time.h>\nusing namespace std;\n\ntimespec diff(timespec start, timespec end);\n\nint …
Run Code Online (Sandbox Code Playgroud)

c++ resolution timing

2
推荐指数
1
解决办法
9506
查看次数