小编Ser*_*gey的帖子

如何在 Kotlin 中将 Pair 对象解构为两个变量

我有一个返回的函数Pair

fun createTuple(a: Int, b: Int): Pair<Int, Int> {
    return Pair(a, b)
}
Run Code Online (Sandbox Code Playgroud)

我想初始化变量ab使用此函数,然后在循环内重新分配它们:

var (a, b) = createTuple(0, 0)
for (i in 1..10) {
    createTuple(i, -i).let{
       a = it.first
       b = it.second
    }
    println("a=$a; b=$b")
}
Run Code Online (Sandbox Code Playgroud)

使用起来let感觉很别扭。有没有更好的方法来解开Pair内部循环?

以下行不会编译:

(a, b) = createTuple(i, -i)
a, b = createTuple(i, -i)
Run Code Online (Sandbox Code Playgroud)

tuples kotlin

11
推荐指数
1
解决办法
1万
查看次数

使用TcpConnectionNew时,不满足特征绑定`():futures :: Future`

我正在尝试使用Tokio crate 在Rust中编写一个简单的TCP客户端.我的代码非常接近这个例子减去TLS:

extern crate futures;
extern crate tokio_core;
extern crate tokio_io;

use futures::Future;
use tokio_core::net::TcpStream;
use tokio_core::reactor::Core;
use tokio_io::io;

fn main() {
    let mut core = Core::new().unwrap();
    let handle = core.handle();

    let connection = TcpStream::connect(&"127.0.0.1:8080".parse().unwrap(), &handle);

    let server = connection.and_then(|stream| {
        io::write_all(stream, b"hello");
    });

    core.run(server).unwrap();
}
Run Code Online (Sandbox Code Playgroud)

但是,编译失败并显示错误:

error[E0277]: the trait bound `(): futures::Future` is not satisfied
  --> src/main.rs:16:29
   |
16 |     let server = connection.and_then(|stream| {
   |                             ^^^^^^^^ the trait `futures::Future` is not implemented for `()` …
Run Code Online (Sandbox Code Playgroud)

tcp rust rust-tokio

8
推荐指数
2
解决办法
4082
查看次数

Julia 获取类型参数的值

我有一个参数类型。例如:

> Array([1 2;3 4])
Run Code Online (Sandbox Code Playgroud)

它的类型是

> typeof(Array([1 2;3 4]))

Array{Int64,2}
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法获取第一个类型参数eltype

> eltype(typeof(Array([1 2;3 4])))

Int64
Run Code Online (Sandbox Code Playgroud)

如何访问第二个和可能的其他类型参数?

types julia

5
推荐指数
1
解决办法
1009
查看次数

julia 子类型化参数超类型时类型不正确

我有一个抽象类型

abstract type PointND{N<:Integer, T<:Number} end
Run Code Online (Sandbox Code Playgroud)

当我子输入它时,设置 N=1

struct Point1D{T} <: PointND{1, T}
    x::T
end
Run Code Online (Sandbox Code Playgroud)

朱莉娅抛出错误

ERROR: TypeError: in PointND, in N, expected N<:Integer, got Int64
Run Code Online (Sandbox Code Playgroud)

即使(typeof(1)<:Integer) == true

即使N类型为 ,也会发生这种情况Number。为什么这不起作用?

types julia

4
推荐指数
1
解决办法
47
查看次数

Rqu的反向行为

bquote函数允许评估包含在.()调用中的表达式的部分.例如,

a <- 2
b <- 100
bquote(.(2 * a) * x + .(log10(b)))
Run Code Online (Sandbox Code Playgroud)

会回来的

4 * x + 2
Run Code Online (Sandbox Code Playgroud)

我想重写这个函数来评估除了.()调用内部的东西之外的所有东西.这是所需的行为:

a <- 2
b <- 100
bquote(2 * a * .(x) + log10(b))

> 4 * x + 2
Run Code Online (Sandbox Code Playgroud)

我知道要这样做,我必须检查抽象语法树并评估没有.()调用的早午餐,但我无法处理所有这些递归.

你能帮我写一下这样的功能吗?

r metaprogramming

2
推荐指数
1
解决办法
83
查看次数

ARM Cortex-M3 从 RAM 初始状态启动

我有两个 ARM Cortex-M3 芯片:STMF103C8T6STM32F103VET6

当设置为从 RAM 启动时,STMF103C8T6 PC寄存器的初始状态为0x200001080x200001e0对于STM32F103VET6

我无法在数据表中找到有关这些地址的信息。为什么它们以这种方式启动?我在哪里可以找到有关它的一些信息?

编辑:

澄清。当芯片设置为从闪存启动时,PC寄存器指向复位处理程序的位置。该地址在复位向量表的地址 0x0 处提供。但是当芯片设置为从 RAM 启动时,PC指向上面提到的恒定地址。

编辑2:

STMF103C8T6拆解:

20000000 <Vectors>:
20000000:       20005000        andcs   r5, r0, r0
20000004:       2000010f        andcs   r0, r0, pc, lsl #2
20000008:       2000010d        andcs   r0, r0, sp, lsl #2
2000000c:       2000010d        andcs   r0, r0, sp, lsl #2
20000010:       2000010d        andcs   r0, r0, sp, lsl #2
20000014:       2000010d        andcs   r0, r0, sp, …
Run Code Online (Sandbox Code Playgroud)

embedded arm stm32 cpu-registers cortex-m

2
推荐指数
1
解决办法
2188
查看次数

奇怪的行为从R中的data.frame中删除列

从data.frame中删除列时遇到了一个奇怪的行为.最初我有:

> a <- data.frame("a" = c(1,2,3), "abc" = c(3,2,1)); print(a)
  a abc
1 1   3
2 2   2
3 3   1
Run Code Online (Sandbox Code Playgroud)

现在,我a$a从data.frame中删除

> a$a <- NULL; print(a)
  abc
1   3
2   2
3   1
Run Code Online (Sandbox Code Playgroud)

正如所料,abc我的data.frame中只有列.但是当我尝试引用已删除的列时,奇怪的部分开始了a.

> print(a$a)
[1] 3 2 1
> print(is.null(a$a))
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

它看起来像R返回的值a$abc而不是NULL.

当剩余列名称的开头与已删除列的名称完全匹配时,会发生这种情况.

这是一个错误还是我错过了什么?

r dataframe

1
推荐指数
1
解决办法
181
查看次数