小编Cat*_*kul的帖子

属性和方法之间的界限应该在哪里?

可能重复:
属性与方法

在许多情况下,很明显某些东西应该是属性还是方法,但是有些东西可能被认为是含糊不清的.

明显属性:

  • "名称"
  • "长度"

明显的方法:

  • "发信息"
  • "打印"

暧昧:

  • "有效"/"IsValid"/"验证"
  • "InBounds"/"IsInBounds"/"CheckBounds"
  • "AverageChildValue"/"CalcAverageChildValue"
  • "ColorSaturation"/"SetColorSaturation"

我想我会倾向于模棱两可的方法,但有没有人知道有助于决定这一点的规则或惯例?例如,所有属性应该是O(1)?属性是否应该无法更改其他数据(ColorSaturation可能会更改R,G,B值)?如果有计算或汇总,它不应该是财产吗?

仅仅从学术的角度来看,(而不是因为我认为这是一个好主意)是否有理由不对属性发疯,只是在不参与争论的情况下制作所有类别的审讯,以及可以改变的一切具有单个参数且无法失败的类,属性?

c# methods properties conventions time-complexity

12
推荐指数
2
解决办法
329
查看次数

如何在scala中匿名实现Java接口?

假设我有一个Java接口

public interface Bar {

  public void baz(String st)
  public void jaz()
}
Run Code Online (Sandbox Code Playgroud)

我想在函数体中的scala中匿名实现上面的接口,如:

def foo() = {
val bar : Bar = new Bar() {
// how to do that ?


 }

}
Run Code Online (Sandbox Code Playgroud)

java scala

12
推荐指数
2
解决办法
3865
查看次数

将线性代数库与Boost :: Units组合在一起

我正在进行大量的科学编程,并使用Boost.Units提供了非常好的经验,它提供了数量的编译时尺寸分析(即带有单位的标签数量,从而通过经典物理尺寸分析捕获了许多误差)并使用了Eigen 2代表线性代数.

然而,Eigen没有单位的概念,虽然你可以在Eigen的矩阵中设置标量,但是它期望两个量的乘法产生相同的类型,这对于单位来说显然是不正确的.例如,代码如:

using boost::units::quantity;
namespace si = boost::units::si;
Eigen::Matrix< quantity< si::length >, 2, 1 > meter_vector;
quantity< si::area > norm = meter_vector.squaredNorm();
Run Code Online (Sandbox Code Playgroud)

不起作用,即使它在逻辑上是正确的.

有没有支持单位的矩阵库?我知道这在过去很难实现,而且C++ 11 decltype会更容易实现,但是C++ 03和模板专业化肯定是可能的.

c++ boost linear-algebra eigen boost-units

12
推荐指数
1
解决办法
1251
查看次数

确定django模板中的变量类型

我有一个变量,我正在拉入一个有时是日期的表,有时候是一个字符串.如果变量是日期,我想更改格式:

<td>{{ action.extra_column|date:"M d" }}</td>
Run Code Online (Sandbox Code Playgroud)

但如果它是一个字符串,我只想按原样显示:

<td>{{ action.extra_column }}</td>
Run Code Online (Sandbox Code Playgroud)

如果我尝试格式化它并且它是一个字符串,我得不到该变量的输出.

如何确定类型以便我可以根据类型调整渲染.

django django-templates

12
推荐指数
2
解决办法
2万
查看次数

是否可以参数化模板化成员函数的常量?

除了函数名称本身之外,模板使函数签名的大部分内容都可以参数化.但是也可以参数化成员函数的常量吗?

琐碎,极简主义,非模板化的例子:

struct Foo {
    Foo *       self()       { return this; }
    Foo const * self() const { return this; }
};
Run Code Online (Sandbox Code Playgroud)

稻草人模板假设:

struct Foo {
    template<typename T> T self() std::constness_of(T) { return this; }
};
Run Code Online (Sandbox Code Playgroud)

c++ templates const c++11 c++14

12
推荐指数
1
解决办法
339
查看次数

在Visual C++中发现构建错误/成功的声音?

在长时间的Visual C++构建中,听到这样的构建/编译结果的某些(可选)声音真的很有帮助:

  • 个别编译错误
  • 文件编译成功/失败
  • 建立成功/失败
  • 批量构建成功/失败

有谁知道如何在Visual C++(特别是Vista上的Visual C++ 2008)中为这些类型的构建事件启用声音?

windows visual-studio-2005 visual-studio-2008 visual-studio visual-c++

11
推荐指数
2
解决办法
2832
查看次数

(如何)绑定/重新绑定方法以使用不同签名的委托?

我是一个c ++开发人员,在c ++中使用了信号和插槽,这对我来说似乎与c#中的委托类似.我发现自己在寻找"绑定"提供的功能时感到茫然,并且觉得我必须遗漏一些东西.

我觉得像C++这样的东西应该可以在带有委托的c#中实现.这里有一些psudo代码,用于我将在c ++中做什么:

Slot<void> someCallback;

int foo(int i)
{
    std::cout << "Value: " << i << "\n";
    return i;
}

int main()
{
    int i = 0;
    Slot<int> someCallback = bind( fun_ptr(foo), i );
    ++i; // added to show that late evaluation would be a non-trivial difference
    int result = someCallback();
    assert( result == 0 );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法找到任何关于c#delegates的绑定/重新绑定的引用.我错过了什么吗?在c#中有一些根本不同的方法吗?

c# delegates callback currying signals-slots

11
推荐指数
1
解决办法
6313
查看次数

如何解决类型和对象之间的常见命名冲突?

由于标准c#约定是大写公共属性的第一个字母,因此类型名称的初始大写的旧c ++约定和非类型名称的初始小写不会阻止经典名称冲突,其中最明显的对象名称与类型匹配名称:

class FooManager
{
    public BarManager BarManager { get; set; } // Feels very wrong.
                                               // Recommended naming convention?
    public int DoIt()
    {
         // 1st and 2nd Bar Manager are different symbols 
         return BarManager.Blarb + BarManager.StaticBlarb;                                                                          
    }
}

class BarManager
{
    public        int Blarb { get; set; }
    public static int StaticBlarb { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

它似乎编译,但感觉很错误.是否有推荐的命名约定来避免这种情况?

c# types namespaces class naming-conventions

11
推荐指数
1
解决办法
1794
查看次数

Valgrind /可以使用多个处理器吗?

有没有办法让valgrind使用多个处理器?

我正在使用valgrind的callgrind进行一些瓶颈分析,并注意到我的应用程序与在valgrind/callgrind之外运行时显着不同的资源使用行为.

当在valgrind外部运行时,它最多可以输出几个处理器,但是在valgrind中运行只使用一个处理器.这让我担心我的瓶颈会在不同的地方,从而使我的分析无效.

c++ profiling valgrind multicore

11
推荐指数
1
解决办法
3660
查看次数

为什么std :: set :: lower_bound(x)(有效)定义为最小数> = x而不是最大数<= x?

也许我误解了技术定义,lower bound但我希望如果我有一个集合a = { 0, 3, 4 }并计算a.lower_bound(2)结果将是0.即我希望std::set::lower_bound接近infimum的数学概念

然而,标准库将其定义为不小于(有效>=)x 的最大数字.

这背后的原因是什么?

c++ stl set

11
推荐指数
2
解决办法
3846
查看次数