我一直在寻找格式化食谱,我找不到我想要的东西......
(format nil CONTROL-STRING day name num-apples)
假设我不想改变上面形式的参数,只是CONTROL-STRING
.
day
而且num-apples
永远不会是零,但name
可能是零.
什么时候name
为零,我希望输出看起来像
"Today is Monday. Hello, you have 3 apples."
但是当name
定义时,我希望它看起来像
"Today is Monday. Hello Adam, you have 3 apples."
因此控制字符串需要查看name
,在非零情况下使用它,而不是在nil情况下使用它,但在两种情况下都使用它.
也许它可以通过消耗零和打印它来实现""
?如果是这样,我不知道该怎么做.
我以为我可以通过Google,SO或者我正在阅读的书籍找到这个,但事实证明这是难以捉摸的.
在我正在学习的实现中,我可以在顶层执行以下操作:
(defvar *foo* 4)
(set 'bar 3)
如果我再调用(describe '*foo*)
和(describe 'bar)
,我得到一个描述说,*foo*
是特殊的,bar
非特殊(其他细节之中).
是否有一个函数将符号变量作为参数并返回true或false如果它是特殊的?如果是这样,describe
可能部分通过调用来实现?
上下文:我正在学习Common Lisp,但是在工作中我有一个类似于Common Lisp的Lisp方言系统,但该describe
函数未实现.这里有一些XY事情,但我也试图找到Lisp和CL.
我是Matplotlib的新人.
我使用Python/Matplotlib做了一个干图(也就是棒棒糖).这些类型的地块有风格设置:linefmt
,markerfmt
,basefmt
.
例如,我可以改变基线的颜色,如下所示:
plt.stem(X, Y, basefmt="m")
Run Code Online (Sandbox Code Playgroud)
我想看点和茎,但我不想看到实际的基线.我需要什么命令/格式代码来"隐藏"基线?或者我接近这个错误?
我是 Rust 新手,还没有完全理解它的全部内容。我做了很多 Rust 阅读,也解决了数学问题。我用这个签名编写了一个函数:
pub fn prime_factors(n: u64) -> Vec<u64> {
Run Code Online (Sandbox Code Playgroud)
因此,给定n
30,它应该返回一个值为 2、3 和 5 的向量。我构建了一个测试,内容如下:
#[test]
fn prime_factors_test() {
assert_list_eq([2,3,5].iter(), prime_factors(30).iter());
}
Run Code Online (Sandbox Code Playgroud)
一个亮点是我正在将静态数组与向量进行比较(出于学习目的,这目前是可取的,因为我想练习泛型)。
我的测试功能是我实际上遇到问题的功能。要进行测试,该函数必须迭代两个集合,检查每个索引是否相等。我曾经.zip()
这样做过,但如果集合不均匀,迭代器只会通过较短集合的索引进行耗尽。所以之后zip
,我想检查两个迭代器是否有额外的元素。
以下内容无法编译:
fn assert_list_eq<I, T>(mut expected: I, mut actual: I)
where I: Iterator<Item=T> + Clone,
T: PartialEq + Debug {
for (e, a) in expected.zip(actual) {
assert_eq!(e, a);
}
// fail if there are any "leftovers"
assert_eq!(None, expected.next());
assert_eq!(None, actual.next());
}
Run Code Online (Sandbox Code Playgroud)
我认为循环(或者可能是循环的设置)移动/消耗迭代器,并且它们在循环之后不能使用。但我想检查循环后这些迭代器的状态。我想我知道出了什么问题,只是不知道如何改正。我几乎肯定遇到了概念问题。
作为一种解决方法,我这样做了,但我觉得我正在拥抱一种反模式,通过使用 …