我有两种类型:Lexer和SFunction.
SFunction 代表有状态函数,并且定义如下:
struct SFunction {
f: Option<Box<FnMut() -> SFunction>>,
}
Run Code Online (Sandbox Code Playgroud)
重要的是,任何SFunction引用一个返回一个的闭包SFunction.
现在我希望每个影响相同的函数都具有这些函数Lexer.这意味着每个SFunctions都必须具有取决于具体的寿命Lexer.
如果你想更多地了解我正在做的事情,这里还有一些代码:
impl Lexer {
fn lex(&mut self) {
self.sfunction(Lexer::lexNormal).call()
}
fn sfunction(&mut self, f: fn(&mut Lexer) -> SFunction) -> SFunction {
SFunction::new(Box::new(|| f(self)))
// SFunction { f: Some(Box::new(move ||f(self))) }
}
fn lexNormal(&mut self) -> SFunction {
return SFunction::empty()
}
}
Run Code Online (Sandbox Code Playgroud)
如何在代码中指定此生命周期要求?
我得到的编译器错误"无法推断self由于需求冲突而导致闭包捕获的适当生命周期".我很确定这里的"冲突要求"是一种Box类型假定生命周期'static.我可以做这样的事情Box<FnMut() -> SFunction …
我在结构上有一些方法想作为参数传递。我很确定传递函数的唯一方法是使用闭包。有没有办法我可以不做
|| { self.x() }呢?
这不是最有见地的问题,但我真的希望能够按 Control-L 并让 shell iex 清除屏幕。知道如何做到这一点,或者是否有另一个带有此内置功能的长生不老药外壳?
我习惯于单独使用 cookie。
使用 cookie,我会保存用户名和哈希值,并在每次页面加载时执行数据库查询,以确保用户拥有正确的密码。我正准备对会话做同样的事情,当我发现会话不能被用户编辑时。
理论上,我可以说:
req.session.authenticated = true
Run Code Online (Sandbox Code Playgroud)
只需测试用户是否已通过身份验证,无需重新检查密码是否正确。
这样做安全吗?或者是否有必要存储用户名和哈希?
PS 我使用 Express 4.8.6 和 express-session 1.7.6
所以在Julia中,每个函数都有方法.
以下是有道理的:
f(x, y) = x + y
f(x) = x + 2
Run Code Online (Sandbox Code Playgroud)
这提供了两个附加到此功能的方法.
但是,假设我想在现有的Julia函数中添加一个方法,而不是覆盖它.
例如:
a = [2, 3]
push!(a, 4)
a == [2, 3, 4] # true
type Node
children :: Array{Node}
end
function push!(base :: Node, child :: Node)
push!(base.children, child)
end
Run Code Online (Sandbox Code Playgroud)
这就是我想要做的; 扩展现有功能以适应新类型.但这会引发错误.这可能吗?