小编mSS*_*SSM的帖子

不能在子的初始化程序中的列表推导中调用父方法,但显式循环有效

本child类从继承parent类.child我在构造函数内部 通过重复调用中定义的成员函数初始化一个list-type成员变量.事实证明,如果我通过显式循环并附加返回的每个值进行初始化,一切正常.xsfoo()parentxsfoo()

但是,如果我尝试在列表理解中做同样的事情,我会收到一个奇怪的错误.为什么会出现此错误?在这种情况下,列表理解和显式循环之间有什么区别?

有效的代码的MWE:

class parent(object):
    def __init__(self):
        self.x = 5

    def foo(self, a):
        return self.x


class child(parent):
    def __init__(self):
        super().__init__()

        self.xs = []
        for i in range(9):
            self.xs.append(super().foo(i))    

mychild = child()
Run Code Online (Sandbox Code Playgroud)

child列表理解的定义:

class child(parent):
    def __init__(self):
        super().__init__()
        self.xs = [super().foo(i) for i in range(9)]
Run Code Online (Sandbox Code Playgroud)

有问题的错误:

% python test.py
Traceback (most recent call last):
  File "test.py", line 20, in <module>
    mychild = child()
  File "test.py", line …
Run Code Online (Sandbox Code Playgroud)

python inheritance python-3.x

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

从Julia调用Fortran函数,返回一个数组:未知函数,segfault?

我想从Julia调用我的Fortran库中的函数.在这种情况下,我有一个函数eye,它接受一个I​​nteger,并返回一个二维的整数数组.

Fortran模块使用编译成共享库

$ gfortran -shared -fPIC -o matrix_routines.so matrix_routines.f90
Run Code Online (Sandbox Code Playgroud)

此后,我试图从交互式Julia解释器中调用它(名称从中获取nm):

julia> n=5
5

julia> ccall( (:__matrix_routines_MOD_eye, "/path/to/library/matrix_routines.so"), Array{Int64,2} , (Ptr{Int64},), &n )
Run Code Online (Sandbox Code Playgroud)

然而,这立即导致朱莉娅向我投掷了一个段落错误:

signal (11): Segmentation fault
__matrix_routines_MOD_eye at /path/to/library/matrix_routines.so (unknown line)
anonymous at no file:0
unknown function (ip: -1137818532)
jl_f_top_eval at /usr/bin/../lib/julia/libjulia.so (unknown line)
eval_user_input at REPL.jl:53
jlcall_eval_user_input_19998 at  (unknown line)
jl_apply_generic at /usr/bin/../lib/julia/libjulia.so (unknown line)
anonymous at task.jl:95
jl_handle_stack_switch at /usr/bin/../lib/julia/libjulia.so (unknown line)
julia_trampoline at /usr/bin/../lib/julia/libjulia.so (unknown line)
unknown function (ip: 4199613)
__libc_start_main at …
Run Code Online (Sandbox Code Playgroud)

interop fortran shared-libraries julia

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

共享,借用Vec上的iter()和into_iter()之间的区别?

我正在阅读Rust 101教程,其中作者讨论了共享借用与Vec传递给函数的对象的示例.下面是教程正在教授的略微改进的MWE.有趣的部分是v.iter()在vec_min.作者写道:

这一次,我们显式请求向量的迭代器v.该方法iter借用它所处理的向量,并提供元素的共享借用.

但是如果我for ... in ...在共享的对象上使用构造会发生什么?根据这篇博客文章,这个隐含的for循环使用into_iter(),取得了所有权v.但它不能真正取得v该功能的所有权,因为它只是从它开始借用它,对吧?

有人之间可以解释的差异into_iter(),并iter()应用到借来的对象吗?

enum NumberOrNothing {
    Number(i32),
    Nothing,
}
use self::NumberOrNothing::{Number,Nothing};

impl NumberOrNothing {
    fn print(self) {
        match self {
            Nothing => println!("The number is: <nothing>"),
            Number(n) => println!("The number is: {}", n),
        };
    }
}

fn vec_min(v: &Vec<i32>) -> NumberOrNothing {
    fn min_i32(a: i32, b: i32) -> i32 …
Run Code Online (Sandbox Code Playgroud)

iterator shared rust

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

两个为什么?vperm2f128(avx)vs vperm2i128(avx2)

avx介绍了指令vperm2f128(通过曝光_mm256_permute2f128_si256),而avx2则引入了vperm2i128(通过曝光_mm256_permute2x128_si256).

它们似乎都完全相同,它们各自的延迟和吞吐量似乎也是相同的.

那么为什么两条指令都存在呢?那背后必须有一些推理?可能有些东西我忽略了吗?鉴于avx2对avx引入的数据结构进行操作,我无法想象存在支持avx2但不支持avx的处理器.

intel simd avx avx2

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