小编Phi*_*fer的帖子

如何在C++中正确使用名称空间?

我来自Java背景,使用包,而不是命名空间.我习惯于将一起工作的类放在一起形成一个完整的对象,然后再从该包中重用它们.但现在我在使用C++.

你如何在C++中使用命名空间?您是为整个应用程序创建单个名称空间,还是为主要组件创建名称空间?如果是这样,如何从其他命名空间中的类创建对象?

c++ namespaces

229
推荐指数
10
解决办法
18万
查看次数

为什么这个宏会导致未解析的名称错误?

我想编译类似于这个最小测试用例的代码:

macro_rules! why {
    ( [ $saved:ident ] $body:block ) => {
        let $saved = 3;
        $body
        let _a = $saved;
    }
}

fn bar() {
    why!([saved] {
    });
}

fn main() {
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我收到以下错误:

src/main.rs:10:20: 10:21 error: unresolved name `saved` [E0425]
src/main.rs:10         why!([saved] {
                                  ^
src/main.rs:10:9: 11:12 note: in this expansion of why! (defined in src/main.rs)
src/main.rs:10:20: 10:21 help: run `rustc --explain E0425` to see a detailed explanation
Run Code Online (Sandbox Code Playgroud)

引入变量的其他宏工作; 这有什么问题?

macros rust

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

Django QuerySet 二值子查询

给定一个模型

class Entity(models.Model):
    identifier = models.IntegerField()
    created = models.IntegerField()
    content = models.IntegerField()

    class Meta:
        unique_together = (('identifier', 'created'))
Run Code Online (Sandbox Code Playgroud)

我想created在具有 common 的对象中查询最大的所有对象identifier

在 SQL 中,子查询中的窗口函数解决了这个问题:

SELECT identifier, content
  FROM entity
  WHERE (identifier, created)
    IN (SELECT identifier, max(created) OVER (PARTITION BY identifier)
          FROM entity);
Run Code Online (Sandbox Code Playgroud)

另见:http : //sqlfiddle.com/#!17/c541f/1/0

窗口函数和子查询在 Django 2.0 中都可用。但是,我还没有找到用多列表达子查询表达式的方法。

有没有办法将该 SQL 查询转换为 Django QuerySet 世界?这可能是一个 XY 问题,我的问题可以用不同的方式解决吗?

我丑陋的解决方法是

Entity.objects.raw('''
SELECT * FROM app_entity e
 WHERE e.created = (SELECT max(f.created) FROM app_entity f WHERE e.identifier = …
Run Code Online (Sandbox Code Playgroud)

django django-queryset

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

如何使用函数作为参数并应用于lisp中的子列表?

问题很简短.

假设F是任何函数,在这种情况下我使用F= length,并且L是包含子列表的任何列表,例如L在这种情况下是((3 3 3) (2 2) (1)).如何将功能F应用于列表车L

(defun try (F L)
    ('F (car L)))
Run Code Online (Sandbox Code Playgroud)

当我把这个函数称为

(try 'length '((3 3 3) (2 2) (1) (1) ))
Run Code Online (Sandbox Code Playgroud)

我应该得到3的,因为第一Ssblist长度的结果L,(3 3 3)是3.

lisp clisp common-lisp

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

单独链接列表,引用Rust中的随机节点

我正在尝试创建一个由节点组成的单链表,每个节点都有一个对下一个节点的引用,与该节点相关的数据,这是一个有趣的位,即对列表中随机节点的引用.给定节点的随机节点可以出现在节点本身之前,也可以出现在列表中.随机节点是可选的.这是一个图表:

       +---------+  +-------------------+
       |         v  v                   |
     +-+--+     ++--++     +----+     +-+--+
+--->+Data+---->+Data+---->+Data+---->+Data|
     +-+--+     +----+     +--+-+     +----+
       ^                      |
       +----------------------+
Run Code Online (Sandbox Code Playgroud)

该图演示了一个包含四个节点的列表.第一节点的随机引用指向第二节点.缺少第二个节点的随机引用.第三个节点的随机引用是第一个节点.第四个节点的随机引用指向第二个节点.

该列表需要仅支持添加新节点.添加节点后,只要列表存在,就可以通过删除节点使随机引用失效.

我尝试了什么:

我陷入绝对的开端 - 我无法弄清楚如何设计结构以及如何构建列表.这是我在与编译器进行一段时间的摔跤之后得到的代码:

type NodePtr<'a, T> = Option<Box<Node<'a, T>>>;

pub struct Node<'a, T: 'a> {
    data: T,
    next: NodePtr<'a, T>,
    random: Option<&'a Node<'a, T>>,
}

pub struct List<'a, T: 'a> {
    root: NodePtr<'a, T>,
}

#[cfg(test)]
mod test {
    use super::*;

    #[test]
    fn construct() {
        let mut list:List<i32> = List {root: Some(Box::new(Node {data: 5, next: None, random: None}))}; …
Run Code Online (Sandbox Code Playgroud)

rust

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

Java常量超出范围

我想申报一个大常数.但java显示错误,我的常量对于int来说太大了.但我想要长久不变.该怎么办?

 public static final long MAXMONEY = 1000000000000000000;
Run Code Online (Sandbox Code Playgroud)

java long-integer

0
推荐指数
3
解决办法
531
查看次数