这似乎是这将是整个interwebs一个相当普遍的事情,丰富的实例,但我似乎无法找到如何将一个转换的例子[32]byte来[]byte.
我有一个函数,我从一个返回数组的外部库调用
func Foo() [32]byte {...}
Run Code Online (Sandbox Code Playgroud)
然后我需要将该结果传递给不同的函数以进行进一步处理.
func Bar(b []byte) { ... }
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果我试着打电话
d := Foo()
Bar(d)
Run Code Online (Sandbox Code Playgroud)
我明白了
cannot convert d (type [32]byte) to type []byte
Run Code Online (Sandbox Code Playgroud)
干
[]byte(d)
Run Code Online (Sandbox Code Playgroud)
并没有好多少.我该怎么做,尤其是在没有创建数据副本的情况下(当我正在做的所有内容传递时,复制这些数据似乎很愚蠢).
我正在开发一个有很多不同Maven项目的项目.我一直在对这些项目进行一系列JUnit测试,通常这很顺利.我打开Eclipse,右键单击包资源管理器 - >导入...现有的Maven项目,我可以很好地导入项目.我可以构建,深入到src/test/java ...右键单击该文件并执行Run As JUnit测试.不时,我不能让这个工作.如果我右键单击以执行运行方式,我得到的只是AspectJ/Java应用程序.没有JUnit测试.
我注意到项目文件夹旁边的图标只有一个M和一个文件夹图标,而对于有效的项目,有一个文件夹,M和一个AJ.我也注意到它似乎没有像普通的Java项目那样将文件排序到它们的包中.看起来它并没有将项目视为AspectJ项目.如何让Eclipse将这个Maven项目识别为Java项目?
如何在Android Stduio中运行gradle任务时显示gradle控制台?当我执行任务时,弹出运行对话框,但控制台没有.我希望能够看到gradle控制台,以便我可以看到输出,但我不想永远看到gradle控制台(固定模式)95%的时间我宁愿拥有房地产编辑.
我很难过这个.在我正在进行的项目中,我们从Thrift生成go代码.代码在包A/B/thriftapi中创建(以前是A/B/thrift导致问题,因为所有生成的代码都是导入git.apache.org/thrift.git/lib/go/thrift并导致名称冲突).
我生成代码并将代码移动到$GOPATH/src/A/B/D 我然后尝试构建我的项目并且收到了大量的表单错误:
p.X.Read undefined (type Foo has no field or method Read)
Run Code Online (Sandbox Code Playgroud)
我看了一条令人讨厌的台词:
import (
"A/B/D"
"git.apache.org/thrift.git/lib/go/thrift"
)
func(p *Bar) readField1(iprot thrift.TProtocol) error {
p.X = D.NewFoo()
if err := p.X.Read(iprot); err != nil {
...
}
Run Code Online (Sandbox Code Playgroud)
由于我使用的是IntelliJ,因此我按CTRL +点击该Read()方法,确定它会跳转$GOPATH/A/B/D/ttypes.go到该方法
func (p *Foo) Read(iprot thrift.TProtocol) error {
...
}
Run Code Online (Sandbox Code Playgroud)
这正是我期望该方法所在的文件,它是一个指针上的方法,Foo所以没有问题.一切似乎都应该是正确的,但是在IntelliJ和命令行中我都遇到了这些问题.
什么想法可能会出错?当它告诉我方法不存在时会令人沮丧,但如果我点击它(并且还会在智能感知中弹出),它会让我正确
编辑 - 每条评论
type Bar struct {
X Foo `thrift:"x,1,required"`
}
Run Code Online (Sandbox Code Playgroud) 目前我正在PuLP用来解决最大化问题.它工作正常,但我希望能够获得N-best解决方案,而不仅仅是一个.有没有办法在PuLP任何其他免费/ Python解决方案中执行此操作?我想到了从最佳解决方案中随机挑选一些变量并将它们抛出并重新运行的想法,但这似乎完全是黑客攻击.
我不认为有这样做的方式是有效的(如果有的话),但我想我会问,以防其他人知道.我正在寻找创建自己的缓存/查找表.为了使它尽可能有用,我希望它能够存储通用对象.这种方法的问题在于即使你可以制作一个Collections.unmodifiableMap, immutableMap, etc,这些实现只会阻止你改变Map本身.它们不会阻止您从地图中获取值并修改其基础值.基本上我需要的是产生某种效果HashMap<K, ? extends Immutable>,但据我所知,这种情况并不存在.
我原本以为我只能在get方法中返回缓存中值的副本,但是由于Java的Cloneable界面被搞砸了,你不能简单地调用
public V getItem(K key){
return (V) map.get(k).clone();
}
Run Code Online (Sandbox Code Playgroud) 有没有办法限制aggregateMongoDB 中的查询字段?使用a find()你可以设置字段,你不想0限制所有的东西,但是update你和你使用$unset命令(这不是真的相同,但关闭),但似乎没有办法做到这一点用aggregate命令.当我试着去0,我明白了
db.inventory.find( { type: 'food' }, { type:0 } )
Run Code Online (Sandbox Code Playgroud)
UPDATE
显然我的问题不够明确.让我重新陈述一下.要从http://docs.mongodb.org/manual/tutorial/project-fields-from-query-results/窃取示例,我想返回文档中的所有字段,除了某些字段.例:
db.inventory.find( { type: 'food' }, { type:0 } )
Run Code Online (Sandbox Code Playgroud)
在aggregate命令中似乎我只能告诉它要包含什么,而不是要排除什么
我刚刚升级到AS 2.0 Preview 8,我正在尝试构建我的旧项目.我更新了它
classpath 'com.android.tools.build:gradle-experimental:0.6.0-alpha8'
Run Code Online (Sandbox Code Playgroud)
并更新了gradle-wrapper.properties使用gradle-2.10-all.zip,但是当我尝试构建我的项目时,我得到一个Java stactrace说:
Unable to load class com.android.build.gradle.managed.NdkConfig$Impl
Run Code Online (Sandbox Code Playgroud)
我正在使用Java 8来启动AS以及将该项设置为项目的JDK.我也遇到了与Java7相同的问题.我错过了什么?
如何在Android Studio项目中设置本地属性?我想为项目设置一个目录变量,对于项目的每个用户来说显然可能是不同的.这似乎local.properties是一个很好的地方,然后可以通过顶层访问,build.gradle但标题local.properties说
不要修改此文件 - 您的更改将被删除!
该文件必须不签入到版本控制系统,因为它包含具体到你的本地配置信息.
评论似乎这是要使用的文件,但接着说它不做修改.
让我们说我有一个枚举:
typedef enum
{
gray = 4, //Gr[ae]y should be the same
grey = 4,
blue = 5,
red = 6
} FOO;
Run Code Online (Sandbox Code Playgroud)
然后我想打开这个:
switch(f){
case gray:
case grey:
printf("The color of an elephant\n"); break;
case blue:
printf("The color of the sky\n"); break;
case red:
printf("The color of an apple\n"); break;
default:
printf("I don't know this color\n");
}
Run Code Online (Sandbox Code Playgroud)
基本上我有枚举,其值基本上是我想要以完全相同的方式处理的同义词.我尝试了上面的开关,但它不能为我编译.有没有办法做到这一点,还是我坚持使用if/else逻辑?(我不愿意,因为有20多个枚举,而且开关看起来更干净
编辑:是的,我知道我可以选择其中一个(并且没有区域设置不是解决方案),但是枚举明确允许您声明重复值然后您无法使用它似乎有点奇怪他们在转换声明?我想使用枚举,以便我可以在库API中静态强制执行它们发送正确的值(是的,我知道你可以绕过类型转换,我只是想防止愚蠢的错误等等).如果我这样做,现在看来我失去了在switch语句中使用它的能力.
编译器只是将逻辑简化为if/else逻辑.如果案例4:案例5:bar(); 打破;
是合法的,为什么不能案例4:案例4:bar(); 打破;
合法吗?编译器应该能够将其优化为一个语句并继续前进.