代码之家  ›  专栏  ›  技术社区  ›  The Unfun Cat

如何一次性设置结构的所有值?

  •  1
  • The Unfun Cat  · 技术社区  · 6 年前

    如果我有这个结构

    cdef struct Interval:
        unsigned int start
        unsigned int end
        unsigned int index
    

    我可以给它赋值

    i.start = 1
    

    但我可以一次性设置所有值(开始、结束、索引)吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   chrisb    6 年前

    我在文档中找不到它,但Cython确实支持中的结构初始化。 c

    %%cython
    def f():
        cdef Interval i = [1, 1, 3]
        return i.index
    

    C代码生成为:

      struct __pyx_t_46_cython_magic_f52bf70efc56b7361a3a2e15f913f262_Interval __pyx_t_1;
    
      /* "_cython_magic_f52bf70efc56b7361a3a2e15f913f262.pyx":14
     * 
     * def f():
     *     cdef Interval i = [1, 1, 3]             # <<<<<<<<<<<<<<
     *     return i.index
     */
      __pyx_t_1.start = 1;
      __pyx_t_1.end = 1;
      __pyx_t_1.index = 3;