我在swift中遇到了这种愚蠢的行为,其中强制解包一个可选项不会传播.
从文档:
试着用!访问不存在的可选值会触发运行时错误.在使用之前,请务必确保可选项包含非零值!强行解开它的价值.
重现:
func foo(bar:String?) throws{
print(bar!);
}
Run Code Online (Sandbox Code Playgroud)
和
try foo(nil);
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎不合逻辑或一致,我找不到有关此主题的任何文档.
这是设计的吗?
当我尝试将纹理和文本文件添加到我的repo时,一切正常,但是当我尝试添加.blend文件时,我收到此错误.我尝试了一些我在这里和谷歌上找到的东西,它们都没有用(所有这些都是用于克隆/拉取命令)
我正在使用Tortoise git 1.7.8和Git 1.7.10 msysgit - 在最新版本失败后我改为使用它们.
其他人没有问题将事情推送到回购,但我没有向他们发送.blend文件.
这是输出:
Pushing to ssh://git@x.x.x:x/home/git/gitrepo
Counting objects: 4, done.
Compressing objects: 100% (3/3)
Writing objects: 100% (3/3), 112.00 KiB | 116 KiB/s
Writing objects: 100% (3/3), 113.07 KiB | 116 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
fatal: early EOF
error: unpack failed: unpack-objects abnormal exit
To ssh://git@x.x.x:x/home/git/gitrepo
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'ssh://git@x.x.x:x/home/git/gitrepo'
Run Code Online (Sandbox Code Playgroud)
编辑:现在看来这是一个服务器问题,因为github工作.如果我找到解决方案,我会更新.
我有两个线程,一个调度消息,另一个调度消息.简单,常见.我ArrayBlockingQueue用于同步,但不希望调度程序直接访问工作人员消息队列 - 我使用包装器.问题是是否应该声明二传手synchronized.
public class Worker implements Runnable{
protected final ArrayBlockingQueue<ByteBuffer> messages = new ArrayBlockingQueue<ByteBuffer>(16);
public synchronized void putMessage(ByteBuffer msg) throws InterruptedException{
messages.put(ByteBuffer);
}
}
Run Code Online (Sandbox Code Playgroud)