如果我有一个类A和一个类B是A内部类.我还有另一堂课B.它不在A.
class A {
...
class B {
...
}
...
}
class B {
...
}
Run Code Online (Sandbox Code Playgroud)
如何使外部的实例B中A?
class A {
B name = new B();
}
Run Code Online (Sandbox Code Playgroud)
将得到一个内在的实例B.
在Windows中,如果我用MS Word打开文件,则尝试删除它.系统将阻止我.它可以防止文件被删除.
Linux中有类似的机制吗?在编写自己的程序时如何实现它?
我读了手册,它说的clone是Runs init and fetch.
但我试过这个:
git svn clone -T http://svn.felspar.com/public/m-intercept/trunk/
Run Code Online (Sandbox Code Playgroud)
然后得到:
fileparse():在/ usr/lib/git-core/git-svn第405行需要一个有效的路径名
并没有下载任何文件.
但是当我使用时:
git svn init http://svn.felspar.com/public/m-intercept/trunk/
git svn fetch
Run Code Online (Sandbox Code Playgroud)
行.它完美地运作.我使用完全相同的URL.
假设mydict是一个Python字典.
mydict = {'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
我可以items用来迭代它的元素:
for k,v in mydict.items():
print k,v
Run Code Online (Sandbox Code Playgroud)
或使用iteritems:
for k,v in mydict.iteritems():
print k,v
Run Code Online (Sandbox Code Playgroud)
有什么不同?我认为python的哲学是"只有一种方法"吗?
我想迭代一个数组的一部分.例如,我尝试打印除第一个元素之外的所有元素:
array[1..-1].each {|e| puts e}
Run Code Online (Sandbox Code Playgroud)
但array[1..-1]建立一个新的Array.如果array非常巨大,这是浪费.另一种直截了当的方法:
(1...array.size).each { |i| puts array[i] }
Run Code Online (Sandbox Code Playgroud)
有用.但我想知道是否有一些更优雅的技巧.
通常我可以写日志Logger:
//abc.rb
require 'logger'
logger = Logger.new('foo.log')
$./abc.rb
Run Code Online (Sandbox Code Playgroud)
但在Daemons我得到一个权限错误:
//xyz.rb
require 'logger'
require 'daemons'
Daemons.run_proc('xyz') do
logger = Logger.new('foo.log')
end
$./xyz.rb
/home/raincole/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/logger.rb:599:in `initialize': Permission denied - foo.log (Errno::EACCES)
from /home/raincole/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/logger.rb:599:in `open'
from /home/raincole/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/logger.rb:599:in `create_logfile'
from /home/raincole/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/logger.rb:594:in `open_logfile'
from /home/raincole/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/logger.rb:549:in `initialize'
from /home/raincole/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/logger.rb:314:in `new'
from /home/raincole/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/logger.rb:314:in `initialize'
Run Code Online (Sandbox Code Playgroud)
我跑abc.rb,并xyz.rb在同一目录下,并用相同的身份.为什么不能像另一个一样登录?
我正在使用红宝石amqp宝石.我运行了一个AMQP.start事件循环,但it raised a在循环期间"突然发生了PossibleAuthenticationFailureError".
AMQP.start(amqp_config) do |connection|
channel = AMQP::Channel.new connection
channel.on_error do |channel, channel_close|
puts "Oops... a channel-level exception: code = #{channel_close.reply_code}, message = #{channel_close.reply_text}"
end
my_worker = MyWorker.new
my_worker.start
end
[amqp] Detected TCP connection failure
/home/raincole/.rvm/gems/ruby-1.9.3-p125/gems/amq-client-0.9.3/lib/amq/client/async/adapters/event_machine.rb:164:in `block in initialize': AMQP broker closed TCP connection before authentication succeeded: this usually means authentication failure due to misconfiguration. Settings are {:host=>"localhost", :port=>5672, :user=>"guest", :pass=>"guest", :vhost=>"/", :timeout=>nil, :logging=>false, :ssl=>false, :broker=>nil, :frame_max=>131072} (AMQP::PossibleAuthenticationFailureError)
Run Code Online (Sandbox Code Playgroud)
怪异的部分是,我的工作人员已经收到一些消息之前,我得到了PossibleAuthenticationFailureError.看起来配置应该是正确的(我一遍又一遍地检查). …
通常while循环的样板看起来像(r是我想要的结果,p是预测器:
var r, p;
while(p()) {
(r, p) = compute(r)
}
Run Code Online (Sandbox Code Playgroud)
我可以将其转换为递归以摆脱var:
def f(r) = {
val (nr, p) = compute(r)
if(p()) nr
else f(nr)
}
Run Code Online (Sandbox Code Playgroud)
有没有内置的方法来实现这种逻辑?我知道Iterator.continually,但似乎仍然需要var存储副作用。
我今天学习了Android的ArrayAdapter,发现有一个commom模式,它使用ViewHolder来保存Views的引用,而不是每次调用findViewById.
但它是如何工作的?适配器通常用于显示View(Group)的列表,如果我缓存View,为什么它们都没有引用最旧的?
我想要做的是在两个处理程序之间发送数据.
element.onmousedown = function() {
data = precalculate();
}
element.onmouseup = function() {
dosomething(data);
}
Run Code Online (Sandbox Code Playgroud)
如果它data是一个全局变量,它的工作原理.人们说全球变量是邪恶的.但我不知道如果没有它.
或者我误解了"全局变量"?