小编cib*_*en1的帖子

Ruby中的"=="总是重视平等吗?

对不起,如果重复(我没找到)

这只是为了确认Ruby的运算符==始终执行相等比较.即

a == b
Run Code Online (Sandbox Code Playgroud)

将a的值与b的值进行比较,而不是像Java一样,是否指向内存中的同一个对象(对于后一种情况,在Ruby中,你应该使用a.object_id == b.object_id).

因此,在Ruby中将字符串值与==进行比较是安全的(尽管在Java中这样做是不安全的)

谢谢

编辑:

问题在于任何Ruby对象的默认==行为,因为它可能误导Java-C-C++程序员假设== b比较引用本身,而不是引用内容.

无论如何,你可以使用字符串检查这段代码

one="hello"
two="he"
two << "llo"

if one == two
  puts "surprise: comparing values, not like in Java"
end

if not one.object_id == two.object_id
  puts "obvious: do this to compare references"
end
Run Code Online (Sandbox Code Playgroud)

编辑2.

所以,在Ruby中,比较

a == b
Run Code Online (Sandbox Code Playgroud)

检查a和b的值

但是,任务

a = b
Run Code Online (Sandbox Code Playgroud)

不复制值,但使a和b指向同一个对象!

继续前面的代码

puts one.object_id
puts two.object_id

puts " and now "

one = two

puts one.object_id
puts two.object_id
Run Code Online (Sandbox Code Playgroud)

ruby string-comparison object-comparison

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

maven deploy:如何限制只部署工件?(多模块环境)

我有一个包含两个模块的项目:客户端和服务器。在父 pom.xml 中,我添加了部署阶段的信息,以便部署到本地目录:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.my</groupId>
  <artifactId>myTest</artifactId>
  <version>0.1</version>
  <packaging>pom</packaging>
  <name>myTest</name>
  <modules>
    <module>server</module>
    <module>client</module>
  </modules>

<!-- for: mvn deploy -->
<distributionManagement>
    <repository> 
        <id> myRepo </id>
        <url> file:myDeployDir </url>
    </repository>
</distributionManagement>

</project>
Run Code Online (Sandbox Code Playgroud)

当我运行时,mvn deploy不仅 server-0.1.jar 和 client-0.1.jar 被复制到myDeploy33 个(!)文件的总和:*pom *sha1 *md5 *xml 用于 pom、元数据和 jar。

如何设置只复制 server-0.1.jar 和 client-0.1.jar?

谢谢!

deployment maven

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

使用模板和内联进行C++元编程

是否值得编写如下代码来复制数组元素:

#include <iostream>
using namespace std;


template<int START, int N> 
struct Repeat { 
  static void copy (int * x, int * y) {
   x[START+N-1] = y[START+N-1];
   Repeat<START, N-1>::copy(x,y);
  }
};

template<int START> 
struct Repeat<START, 0> { 
  static void copy (int * x, int * y) {
   x[START] = y[START];
  }
};



int main () {


   int a[10];
   int b[10];

             // initialize
   for (int i=0; i<=9; i++) {
     b[i] = 113 + i;
     a[i] = 0;
   }

            // do the copy …
Run Code Online (Sandbox Code Playgroud)

c++ templates metaprogramming

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

C++中的运算符+ for matrices

我想在C++中对矩阵(例如2D)的+运算符的朴素实现将是:

class Matrix {

  Matrix operator+ (const Matrix & other) const {
      Matrix result;
      // fill result with *this.data plus other.data
      return result;
  }
}
Run Code Online (Sandbox Code Playgroud)

所以我们可以像使用它一样

Matrix a;
Matrix b;
Matrix c;

c = a + b;
Run Code Online (Sandbox Code Playgroud)

对?

但是如果矩阵很大,那么效率就不高,因为我们正在做一个不必要的复制(返回结果).

因此,如果我们不高效,我们必须忘记干净的电话:

c = a + b;
Run Code Online (Sandbox Code Playgroud)

对?

你会建议/更喜欢什么?谢谢.

c++ operators matrix

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

DocBook宏?

有没有什么方法可以在DocBook文档中定义宏(如tex macros o latex定义)?

DocBook非常冗长,宏会有很多帮助.我没有在快速入门教程中找到它们.

如果是这样,有人可以提供一个简单的例子或链接吗?

谢谢

macros docbook

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

Scala并行分配仅在声明中

有:

def f () = {
    (1, "two", 3.0)
}
Run Code Online (Sandbox Code Playgroud)

为什么没事

var (x, y, z) = f()
Run Code Online (Sandbox Code Playgroud)

但不是


var i = 0
var j = "hello"
var k = 0.0

// use i, j, k
...
//then
(i, j, k) = f() // ; expected but = found

scala variable-assignment

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

"ArrayList <A>"和"ArrayList <?extends A>"之间的实际区别是什么?

我看了问题q1,q2,q3,但它们并没有完全涵盖我的问题.

注意,ArrayList<A> and ArrayList<? extends A>它们用于声明变量或参数(不用于创建新的泛型类).

声明对象属性时,两个表达式是否等效(案例1)?:

class Foo {

  private ArrayList<A> aList; // == ArrayList<? extends A> aList;
}
Run Code Online (Sandbox Code Playgroud)

编辑:从允许添加哪种对象的角度来看,两个表达式是否相同aList?,但与下列情况的意义不同?

但在参数声明(案例2)中使用时它们是不同的?:

void methodFoo(ArrayList<A> al)  !=  void methodFoo(ArrayList<? extends A> al)
Run Code Online (Sandbox Code Playgroud)

因为第一个只允许传递ArrayList对象,而第二个就像允许发送的"更宽容" ArrayList<A1>并且ArrayList<A2>(只要A1和A2扩展A)?

如果这是正确的,那么这两个表达式是否有效地存在其他情况?

谢谢,

java generics

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

如何在socket.io上执行RPC?

假设我们有一个简单的echo服务器(在第一次请求时调整得更长):

var waiting = 8000;
io.on('connection', function(socket){   
    socket.on('doEcho', function (data) {
        setTimeout( function () {
            socket.emit('echoDone', data);
        }, waiting);
        waiting = 1;
    });
});
Run Code Online (Sandbox Code Playgroud)

然后说一个index.html客户端脚本:

askEcho ("11111", function (resp) {
         console.log("answer for 11111 " + resp);
});
askEcho ("22222", function (resp) {
         console.log("answer for 22222 " + resp);
});
Run Code Online (Sandbox Code Playgroud)

其中askEcho是下列车函数,故作一个RPC存根:

function askEcho (text, fun) {
     socket.emit('doEcho', text);
     socket.on('echoDone', function (data) {
         fun ( data );
     });
  }
Run Code Online (Sandbox Code Playgroud)

显然我得到的是下面的混乱

answer for 11111  22222
answer for …

rpc callback socket.io socket.io-1.0

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

在scala中可以启动多少个演员?

我试过这段代码

import scala.actors.Actor

class MyActor(val id:Int) extends Actor {
    def act() {
        println (" ****************** starting actor: " + id)

        while (true) {
            Thread.sleep(1000);
            println ("I'm actor " + id)
        }
    }
}

object Main {
    def main(args:Array[String]) {
        val N = 5
        for (i leftArrow 1 to N) {
            val a = new MyActor(i)
            println (" ++++++++++ about to start actor " + a.id)
            a.start
        }

        println (N + " actors launched?")
    }
}
Run Code Online (Sandbox Code Playgroud)

得到了这个输出

++++++++++ about to start …
Run Code Online (Sandbox Code Playgroud)

scala actor

4
推荐指数
2
解决办法
917
查看次数

返回中使用了什么构造函数或运算符(C++)

我运行此代码来试验复制构造函数和赋值运算符

class AClass {

    private:
        int a;

    public:
        AClass (int a_) : a(a_) {  
            cout << " constructor AClass(int) " << a << endl;
        }

        AClass(const AClass & x) : a(x.a) { 
            cout << " copy constructor AClass(const AClass &) " << a << endl;
        }

        AClass & operator=(const AClass & x) { 
                a = x.a;
                cout << " AClass& operator=(const AClass &) " << a - endl;
                return *this;
        }
};

AClass g () {
    AClass x(8);
    return x; …
Run Code Online (Sandbox Code Playgroud)

c++ return copy-constructor assignment-operator

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