我来自Java背景,使用包,而不是命名空间.我习惯于将一起工作的类放在一起形成一个完整的对象,然后再从该包中重用它们.但现在我在使用C++.
你如何在C++中使用命名空间?您是为整个应用程序创建单个名称空间,还是为主要组件创建名称空间?如果是这样,如何从其他命名空间中的类创建对象?
我想编译类似于这个最小测试用例的代码:
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)
引入变量的其他宏工作; 这有什么问题?
给定一个模型
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) 问题很简短.
假设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.
我正在尝试创建一个由节点组成的单链表,每个节点都有一个对下一个节点的引用,与该节点相关的数据,这是一个有趣的位,即对列表中随机节点的引用.给定节点的随机节点可以出现在节点本身之前,也可以出现在列表中.随机节点是可选的.这是一个图表:
+---------+ +-------------------+
| 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) 我想申报一个大常数.但java显示错误,我的常量对于int来说太大了.但我想要长久不变.该怎么办?
public static final long MAXMONEY = 1000000000000000000;
Run Code Online (Sandbox Code Playgroud) rust ×2
c++ ×1
clisp ×1
common-lisp ×1
django ×1
java ×1
lisp ×1
long-integer ×1
macros ×1
namespaces ×1