我安装了jade(npm install jade)并转到他们的github页面以获取一些示例.这就是我想要执行的:
code.jade:
- var title = "Things"
h1= title
ul#users
- each user, name in users
- if (user.isA == "ferret")
li(class: 'user-' + name) #{name} is just a ferret
- else
li(class: 'user-' + name) #{name} #{user.email}
Run Code Online (Sandbox Code Playgroud)
code.js:
var jade = require('jade');
var options = {
locals: {
users: {
tj: { age: 23, email: 'tj@vision-media.ca', isA: 'human' },
tobi: { age: 1, email: 'tobi@is-amazing.com', isA: 'ferret' }
}
}
};
console.log(jade)
jade.renderFile('code.jade', options, function(err, html){
if …Run Code Online (Sandbox Code Playgroud) 我正在制作一个游戏,而且我遇到了一个问题...当我尝试保存时,JSON失败并报告正在某处制作循环引用.我不认为它实际上是,我看不到它,所以是否有算法或任何可以告诉我它究竟在哪里(在哪些对象和东西之间)?另外,是否有可以保存循环引用的JSON替代方案?我正在运行一个node.js服务器,我看到了这个,但我无法让它工作(它不是作为一个模块,我可以在我的代码中需要()).
javascript json circular-reference serverside-javascript node.js
如果我有这两个功能
// implicit
fn foo(x: &i32) {
}
// explicit
fn bar<'a>(x: &'a i32) {
}
Run Code Online (Sandbox Code Playgroud)
何时会foo返回错误并bar成为正确的函数头?我很困惑为什么我会明确地声明一生:
'a读'生命'a'.从技术上讲,每个引用都有一些与之相关的生命周期,但编译器允许您在常见情况下忽略它们.
我明白一生是什么,但明确指定一生的'a 事情对我有什么影响?作为参考,我使用Rust书作为阅读材料
我正在阅读Rust的Deref特性文档:
pub trait Deref {
type Target: ?Sized;
fn deref(&self) -> &Self::Target;
}
Run Code Online (Sandbox Code Playgroud)
deref函数的类型签名对我来说似乎是违反直觉的; 为什么返回类型是引用?如果引用实现了这个特性,那么它们可以被解除引用,它会产生什么影响呢?
我能提出的唯一解释是引用不实现Deref,但被认为是"原始可解除引用".但是,如何编写适用于任何可解除引用类型的多态函数,包括两者Deref<T>和&T?
该wiki页面说这两类处理集装箱业务,与折叠是一类已经容器foldr在他们定义和函子是fmap.
但是,可折叠类型和Functors类型之间的根本区别是什么?
维基暗示了这种区别:
类[可折叠]类不需要Functor超类,以允许容器如Set或StorableVector
但是我仍然不确定如果我正确地解释了为什么Set无法映射到另一个集合.
在Haskell中,函数是仿函数,以下代码按预期工作:
(*3) `fmap` (+100) $ 1
Run Code Online (Sandbox Code Playgroud)
当然输出是303.但是,在Idris(使用fmap - > map)中,它会出现以下错误:
找不到实现
Functor (\uv => Integer -> uv)
对我来说,似乎函数在Idris中没有实现为函子,至少不像它们在Haskell中那样,但为什么呢?
此外,类型签名究竟(\uv => Integer -> uv)意味着什么?它看起来像是一些部分应用的函数,这就是函数实现所期望的,但语法有点令人困惑,特别\是应该用于lambda/literal的是在那里做什么.
我正在阅读这份文件,他们说重量调整公式如下:
新体重=旧体重+学习率*delta*df(e)/ de*输入
该df(e)/de部分是激活函数的衍生物,通常是一个像S形函数tanh.现在,这实际上是什么?为什么我们甚至成倍增加呢?为什么learning rate * delta * input不够呢?
这个问题出现在这个问题之后并与之密切相关:为什么必须在反向传播神经网络中使用非线性激活函数?.
math artificial-intelligence machine-learning neural-network
我知道我可以像这样添加Python的导入路径:
import sys
sys.path.append("/path/to/directory/")
Run Code Online (Sandbox Code Playgroud)
但是,当我重新启动Python时,这已经消失了.如果我不得不一直这样做,我会觉得很烦人,我想一劳永逸地做到这一点并完成它.
又怎样?我在哪里可以找到该文件?或者我是否需要编辑其他内容?我正在使用最新版本的Ubuntu.
我现在对SQLite有点困惑,因为这是我第一次使用数据库.我从这里得到了sqlite3:https://github.com/developmentseed/node-sqlite3.
我在那看着那个例子,有些事情我明白了,有些则我没有.大部分被包裹在这些数据库命令的.run(),.prepare()以及像给我一个困难时期.
这是一个例子:
var usersDB = new sqlite3.Database("databases/users.db");
usersDB.serialize(function() {
usersDB.run("CREATE TABLE lorem (info TEXT)");
var stmt = usersDB.prepare("INSERT INTO lorem VALUES (?)");
for (var i = 0; i < 10; i++) {
stmt.run("Ipsum " + i);
}
stmt.finalize();
usersDB.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
console.log(row.id + ": " + row.info);
});
});
usersDB.close();
Run Code Online (Sandbox Code Playgroud)
另外,我如何在Node.js上的SQLite数据库中存储简单的东西,例如用户名,密码(我必须自己散列吗?)和电子邮件?
声明或定义引入的名称范围是包含绑定的整个语句序列.然而,在块向前引用的限制:在一份声明序列
s[1]...s[n]组成一个块,如果一个简单的名字s[i]指的是一个实体的定义s[j]在那里j >= i,那么对于所有s[k]之间,包括s[i]和s[j],
s[k]不能是变量定义.- 如果
s[k]是值定义,则必须是lazy.
编辑:我不确定MikaëlMayer的答案是否真的解释了一切.考虑:
object Test {
def main(args: Array[String]) {
println(x)
lazy val x: Int = 6
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,x必须在代码中实际定义之前读取/评估惰性值!这与Mikaël声称懒惰评估消除了在定义之前评估事物的需要相矛盾.