我正在寻找Julia中的(希望内置)函数来计算组合的数量
我显然可以使用阶乘法来实现自己,但我几乎可以肯定有人已经对此感到担忧.
我正在从 JSON 读取数据结构。有一些转换正在进行,最后我有一个struct字段是 type 的地方interface{}。它实际上是一张地图,所以 JSON 将它放在一个map[string]inteface{}.
我实际上知道底层结构是map[string]float64并且我想这样使用它,所以我尝试做一个断言。以下代码重现了该行为:
type T interface{}
func jsonMap() T {
result := map[string]interface{}{
"test": 1.2,
}
return T(result)
}
func main() {
res := jsonMap()
myMap := res.(map[string]float64)
fmt.Println(myMap)
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
panic: interface conversion: main.T is map[string]interface {}, not map[string]float64
Run Code Online (Sandbox Code Playgroud)
我可以执行以下操作:
func main() {
// A first assertion
res := jsonMap().(map[string]interface{})
myMap := map[string]float64{
"test": res["test"].(float64), // A second assertion
}
fmt.Println(myMap)
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我发现它非常难看,因为我需要重建整个地图并使用两个断言。有没有正确的方法来强制第一个断言放弃interface{}并使用float64 …
我有两个布尔向量a = [1,1,1]和b = [0,1,1]地方显然1代表true和0为false.
我想用布尔代数计算它们的内积.因此,我想要的结果
1*0 + 1*1 + 1*1 = 0 + 1 + 1 = 0
Run Code Online (Sandbox Code Playgroud)
因为加法扮演排他性或(XOR)的角色.
我知道产品部分可以像这样完成
a = [true, true, true] # could also use ones(Bool, 3)
b = [false, true, true]
bitwise_prod = a & b
Run Code Online (Sandbox Code Playgroud)
但我不知道怎么做.有任何想法吗?