小编qon*_*onf的帖子

至"if,if,if"或"if,else if else else if else"

我正在编写一些数据分析代码,并且必须根据某些标准排除样本.在实践中,我最终编写如下代码:

bool Test(SampleType sample)
{
  if( ! SubTest1(sample) )
    return false;
  if( ! SubTest2(sample) )
    return false;
  if( ! SubTest3(sample) )
    return false;

  return true;
}
Run Code Online (Sandbox Code Playgroud)

以下似乎与我相同:

bool Test(SampleType sample)
{
  if( ! SubTest1(sample) )
    return false;
  else if( ! SubTest2(sample) )
    return false;
  else if( ! SubTest3(sample) )
    return false;
  else 
    return true;
}
Run Code Online (Sandbox Code Playgroud)

计算成本方面有区别吗?在可扩展性/可维护性,美学等方面是否存在可论证的优先考虑?

我知道这可能是一个无关紧要的问题,但是一旦我把这些问题困在脑子里,我就需要找到答案.

PS:如果有人关心,我的实际代码截至15/09可以在以下网址找到:http: //folk.uio.no/henrikq/conf.tgz

c c++ if-statement

19
推荐指数
4
解决办法
2390
查看次数

一个const成员函数,返回一个指向非const成员变量的指针,为什么它会好?

我在大型合作中工作(大部分是非专业程序员,我是其中之一).我经常看到以下的例子

void T::DoChanges(I i); // will make changes to internal structure of T (non-const)
V T::GetValue();

class A
{
private:
  T* fMember;
public:
  A(); 
  T* GetMember() const {return fMember;}
}
Run Code Online (Sandbox Code Playgroud)

,如果是一个用例

A a;
I i;
a->GetMember()->DoChanges(i);
V v = a->GetMember()->GetValue();
Run Code Online (Sandbox Code Playgroud)

当我参加编程课程时,这种做法违反了钻进我的租户,即const不仅指代类实例的按位结构,还指内部逻辑结构.根据这一理念,成员函数应采用以下形式:

T* GetMember() {return fMember;}
const T* GetMember() const {return fMember;}
Run Code Online (Sandbox Code Playgroud)

我听说有些人认为const应该只引用成员,严格地使用c ++术语.如何/为什么会有人争论这种做法?

c++

8
推荐指数
1
解决办法
1727
查看次数

emacs(重新编译-y)

是否可以将"-yes"标志传递给emacs中的"重新编译"命令?

请原谅我完全缺乏(e)lisp专有技术.我厌倦了去Emacs外面编译我的乳胶代码,所以我在我的.emacs中添加了以下键绑定:

(global-set-key (kbd "<f12>") 'recompile);
Run Code Online (Sandbox Code Playgroud)

是否可以自动对可能出现的以下提示回答"是":"编译过程正在运行;请将其删除?(是或否)."

此外,是否可以使打开的窗口显示输出以自动滚动到底部.有趣的东西通常在那里.也许可以在重新编译后链接以下命令:"Cx o,end-of-buffer".

谢谢!

emacs elisp

7
推荐指数
1
解决办法
576
查看次数

过滤类型,榆树

我有一个List (Maybe a),我想过滤掉的实例Nothing.我可能设法做到了,但我不满意我需要的代码量:

removeNothingFromList : List (Maybe a) -> List a 
removeNothingFromList list =
    List.foldr
        (\cur list ->
            case cur of
                Just val ->
                    val :: list

                Nothing ->
                    list
        )
        []
        list
Run Code Online (Sandbox Code Playgroud)

在js中,模拟是简单地完成的const removeNothingFromList = (list) => list.filter(item => item),我希望它只是我的缺乏经验阻止我看到一个有竞争力的简洁解决方案.

此外,通常有一种方法来检查类型(强制转换为bool),或者通常是否对类型进行过滤?

elm

5
推荐指数
2
解决办法
246
查看次数

逆(列)行主序变换

任何人都可以提供/参考多维行主序的“索引 -> 偏移”* 转换的逆转换。另外,(伪)代码将不胜感激。

举个例子,对引发我的问题的特定问题进行简化:我有一个 3 维数据层次结构,用 (a,b,c) 跨越的空间表示,其中 a、b 和 c 是大于或等于 0 的整数且小于 N_a、N_b 和 N_c。我想将数据表示为一维数组。然后按行主序给出“偏移量”,如下所示:

 int offset(a, b, c){
      return a*N_b*N_c + b*N_c + c;
}
Run Code Online (Sandbox Code Playgroud)

那么什么是逆变换,即:

int a(int offset);
int b(int offset);
int c(int offset);
Run Code Online (Sandbox Code Playgroud)

此外,如何将其推广到第 N 维索引?引发这个问题的问题是第五维的。

如果重要的话,我正在用 c/c++ 编写。

math

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

如何简洁地映射地图到地图

“地图地图到地图”,真是拗口。

无论如何,我可以做到:

val list = List(1, 2, 3)
val list2 = list map (item => item + 1)
println(list2)
// List(2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

为什么以下不起作用?:

val ages = Map("alice" -> 21, "bob" -> 22)
val ages2 = ages map ((name, age) => (name, age + 1))
Run Code Online (Sandbox Code Playgroud)

,以及我该如何让它发挥作用?

编辑:我发现我必须这样做:

val ages2 = ages map {case (name, age) => (name, age + 1)}
Run Code Online (Sandbox Code Playgroud)

,但这并没有回答我的第一个问题,这就是为什么我天真的第一种方法不起作用。

scala scala-collections

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

如何将唯一的id列添加到DataFrame,Apache Spark,Scala

我有一个DataFrame,我想与另一个Dataframe连接,然后按原始行分组,但原始行没有唯一的ID.如何添加唯一ID或以其他方式实现该目标.

scala apache-spark apache-spark-sql spark-dataframe

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