Kotlin没有与Java中使用的静态字段相同的概念.在Java中,普遍接受的日志记录方式是:
public class Foo {
private static final Logger LOG = LoggerFactory.getLogger(Foo.class);
}
Run Code Online (Sandbox Code Playgroud)
问题是在Kotlin中执行日志记录的惯用方法是什么?
我有一个Clojure项目,我想在我的一个使用Maven的Java项目中打包和使用.
当我使用Leiningen生成pom.xml文件时,它将groupId设置为artifactId,但我需要groupId与我的父Java项目相同.
另外,我希望能够将pom.xml中的包装类型指定为jar
简而言之:如何在project.clj中设置groupId和packaging属性以生成包含这些属性的pom.xml?
我想使用 core.logic 编写阶乘。我找到了这个序言片段
factorial(0, 1).
factorial(N, M):- N1 is N - 1, factorial (N1, M1), M is N*M1.
Run Code Online (Sandbox Code Playgroud)
并尝试通过以下方式将其转换为 core.logic
(defne factorialo [n m]
([0 1])
([n m] (fresh [n1 m1]
(== (- n 1) n1)
(== (* n m1) m)
(factorialo n1 m1))))
(run* [q]
(factorialo 3 q))
Run Code Online (Sandbox Code Playgroud)
消息失败
clojure.core.logic.LVar cannot be cast to java.lang.Number
[Thrown class java.lang.ClassCastException]
Run Code Online (Sandbox Code Playgroud)
在 core.logic 中编写阶乘的正确方法是什么?
我想,以创造一个分裂的空间和逗号日志行Vector的Token第Field并Separator显示在下面的代码.
我的问题是nom似乎没有消耗整个日志行,它留下了最后一部分 - 在这种情况下08:33:58).
main.rs
#![feature(rust_2018_preview)]
#[macro_use] extern crate nom;
#[derive(Debug, PartialEq)]
pub enum Token<'a> {
Separator(&'a [u8]),
Field(&'a [u8]),
}
named!(separator, is_a!(" ,"));
named!(not_sep, is_not!(" ,"));
named!(
token<Token>,
alt_complete!(
separator => { |s| Token::Separator(s) } |
not_sep => { |n| Token::Field(n) }
)
);
named!(sequence<Vec<Token>>, many1!(token));
pub fn scan(input: &[u8]) -> Vec<Token> {
let (_, seq) = sequence(input).unwrap();
seq
}
fn main() {
}
#[cfg(test)]
mod tests {
use …Run Code Online (Sandbox Code Playgroud)