我非常想知道究竟是什么让Crystal比Ruby更快,而代码非常相似.简短的回答可能是它被编译,Ruby被解释,但我想更多地了解语言规范.
我正在为水晶创建一个m3u8生成器/解析器,但我想稍后使用ruby.这可能/容易吗?
我正在使用 clap,在尝试解析参数时出现意外行为。
我的命令行工具应该像这样工作
foo -u <user> <command>
Run Code Online (Sandbox Code Playgroud)
例如:
foo -u jack echo s
foo -u paul ls -al
Run Code Online (Sandbox Code Playgroud)
我需要获取诸如用户之类的选项,但其<command>本身,我需要是其余的参数。
<command>下面的代码会导致一种行为,除非引用它,否则我无法获取值:
foo -u jack echo s
Run Code Online (Sandbox Code Playgroud)
error: Found argument 's' which wasn't expected, or isn't valid in this context
Run Code Online (Sandbox Code Playgroud)
而这工作正常:
foo -u jack 'echo s'
Run Code Online (Sandbox Code Playgroud)
有什么办法可以避免引号吗?
let matches = App::new("foo")
.version("0.1")
.arg(
Arg::with_name("user")
.short("u")
.long("user")
.required(true)
.takes_value(true),
)
.arg(
Arg::with_name("command")
.help("The command to run")
.required(true)
.takes_value(true),
)
.get_matches();
Run Code Online (Sandbox Code Playgroud)
我还在clap 存储库上提出了一个问题。
这是我的 Users.model:
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
minLength: 3,
maxLength: 30
},
username: {
type: 'string',
required: true,
},
toJSON: function() {
var obj = this.toObject();
obj.link = sails.config.globals.baseUrl + sails.config.routes.user + obj.id;
return obj;
}
}
};
Run Code Online (Sandbox Code Playgroud)
我想要的是使用一些在模型中“预”计算的属性。我的解决方案是在 toJSON() 函数中注入 attr,但在视图中我必须使用:
<%= users.toJSON().link %>
Run Code Online (Sandbox Code Playgroud)
有没有办法为用户创建一个属性或一些方法?喜欢:
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
minLength: 3,
maxLength: 30
},
myPersonalAttribute: function(){
return "Value"
}
}
Run Code Online (Sandbox Code Playgroud) crystal-lang ×2
ruby ×2
clap ×1
javascript ×1
performance ×1
runtime ×1
rust ×1
sails-mongo ×1
sails.js ×1
waterline ×1