我对Ruby中的对象赋值和指针感到有点困惑,并编写了这个代码片段来测试我的假设.
class Foo
attr_accessor :one, :two
def initialize(one, two)
@one = one
@two = two
end
end
bar = Foo.new(1, 2)
beans = bar
puts bar
puts beans
beans.one = 2
puts bar
puts beans
puts beans.one
puts bar.one
Run Code Online (Sandbox Code Playgroud)
我曾经假设当我将bar分配给bean时,它会创建一个对象的副本,而修改一个不会影响另一个.唉,输出显示不然.
^_^[jergason:~]$ ruby test.rb
#<Foo:0x100155c60>
#<Foo:0x100155c60>
#<Foo:0x100155c60>
#<Foo:0x100155c60>
2
2
Run Code Online (Sandbox Code Playgroud)
我相信这些数字与对象的地址有关,并且对于bean和bar都是相同的,当我修改bean时,bar也会被改变,这不是我所期望的.看来我只是创建一个指向对象的指针,而不是它的副本.在分配时复制对象而不是创建指针需要做什么?
使用Array类进行的测试也显示了一些奇怪的行为.
foo = [0, 1, 2, 3, 4, 5]
baz = foo
puts "foo is #{foo}"
puts "baz is #{baz}"
foo.pop
puts "foo is #{foo}"
puts "baz is #{baz}"
foo …Run Code Online (Sandbox Code Playgroud) 我正在为一些网站开发WPF客户端程序.它使用XML数据库.我是XML的新手.有人请解释如何创建,追加(最重要的),编辑,读取和加密XML文件.我知道这是个大问题.但是,这很紧急.尽快完成工作.在互联网上搜索,没有得到正确的信息.
我曾经使用这个脚本进行jquery电子邮件混淆:
$(".replaceAt").replaceWith("@");
$(".obfuscate").each(function () {
$(this).attr("href", "mailto:"+$(this).text());
});
Run Code Online (Sandbox Code Playgroud)
<a class="obfuscate">name<span class="replaceAt">-AT-</span>server.com</a>
但是使用jQuery 1.4.x,我现在收到此错误:
未捕获的异常:语法错误,无法识别的表达式:@
在网上看一下,看起来jQuery认为@是一个特殊的角色.我试着"\ @"它以及其他一些没有运气的东西.我不是一个jQuery忍者知道如何解决这个问题.有任何想法吗?
我需要一个'无形'Delphi单元中的Timer(还有一个带有表单的主单元),所以我这样做:
unit ...
interface
type
TMyTimer = Class(TTimer)
public
procedure OnMyTimer(Sender: TObject);
end;
var
MyTimer: TMyTimer;
implementation
procedure TMyTimer.OnMyTimer(Sender: TObject);
begin
...
end;
initialization
MyTimer := TMyTimer.Create(nil);
with MyTimer do
begin
Interval := 1000;
Enabled := True;
OnTimer := OnMyTimer;
end;
finalization
FreeAndNil(MyTimer);
Run Code Online (Sandbox Code Playgroud)
问题是OnMyTimer过程永远不会运行.我真的很感激为什么:-)
我有一个接受可变数量参数的函数:
foo (Class... types);
Run Code Online (Sandbox Code Playgroud)
其中我得到了一定数量的类类型.接下来,我想要一个功能
bar( ?? )
Run Code Online (Sandbox Code Playgroud)
这也将接受可变数量的参数,并且能够验证变量是相同的数字(这很容易)和相同的类型(硬部分)foo.
我怎样才能做到这一点?
编辑:澄清一下,电话可能是:
foo (String.class, Int.class);
bar ("aaa", 32); // OK!
bar (3); // ERROR!
bar ("aa" , "bb"); //ERROR!
Run Code Online (Sandbox Code Playgroud)
此外,foo和bar是同一类的方法.
我计划进行现场面试,所以我准备几个基本问题.根据公司简介,他们在字符串操作问题上很重要.到目前为止,我手动编写了这些函数:
有人可以给我一个更经典的字符串问题列表,我可以在去那里之前练习吗?
我正在尝试使用以下html标记创建css按钮:
<a href="access.php" class="css_button_red">Forgot password</a>
Run Code Online (Sandbox Code Playgroud)
但它最终并不比中间的文字大.尽管我已经设定了班级的高度和宽度.
你可以在这里预览问题顺便提一下,www.matkalenderen.no注意第一个按钮,这是一个表单按钮,它正在使用它自己的类.起初我也尝试在css按钮上使用相同的类,并且出现了同样的问题,所以我尝试将它们分成自己的类.万一发生了某种崩溃.但无论如何它并不重要.
我在这里错过了什么?
我有一个Java应用程序,通过TCP套接字连接到用C/C++开发的"服务器".
app和server都运行在同一台机器上,一个Solaris机箱(但我们最终考虑迁移到Linux).交换的数据类型是简单的消息(登录,登录ACK,然后客户端要求的东西,服务器回复).每条消息长约300字节.
目前我们正在使用套接字,一切正常,但我正在寻找一种更快的方式来交换数据(更低的延迟),使用IPC方法.
我一直在研究网络,并提出了以下技术的参考:
但我无法找到他们各自的性能适当的分析,无论是如何实现它们在Java和C/C++(这样他们可以互相交谈),也许除了管我能想象该怎么办.
在这种情况下,任何人都可以评论每种方法的表现和可行性吗?任何有用的实现信息的指针/链接?
编辑/更新
按照我在这里的评论和答案,我发现了有关Unix域套接字的信息,它似乎是通过管道构建的,并且可以节省整个TCP堆栈.它是特定于平台的,因此我计划使用JNI或者juds或junixsocket进行测试.
接下来可能的步骤是直接实现管道,然后共享内存,虽然我已被警告过额外的复杂程度......
谢谢你的帮助
我在方法C中有一些代码将根据谁调用它来执行.
public void C()
{
if(A called me) { .... }
if(B called me) { .... }
}
Run Code Online (Sandbox Code Playgroud)
一种方法是使用标志变量.在调用C之前设置变量,然后在C中处理标志.
还有其他想法吗?
我正在尝试删除所有的叶子.我知道叶子没有孩子,这就是我到目前为止所拥有的.
public void removeLeaves(BinaryTree n){
if (n.left == null && n.right == null){
n = null;
}
if (n.left != null)
removeLeaves(n.left);
if (n.right != null)
removeLeaves(n.right);
}
Run Code Online (Sandbox Code Playgroud)