我正在使用Scala Combinators创建解析器.太棒了.我最终得到的是一长串陷入困境的案例类,例如:ClassDecl(Complex,List(VarDecl(Real,float), VarDecl(Imag,float)))只需要100倍.我想知道是否有一种很好的方法以树状方式打印这样的案例类,以便更容易阅读..?(或其他形式的漂亮印刷品)
ClassDecl
name = Complex
fields =
- VarDecl
name = Real
type = float
- VarDecl
name = Imag
type = float
Run Code Online (Sandbox Code Playgroud)
我想结束这样的事情
编辑:奖金问题
是否还有一种方法来显示参数的名称..?喜欢:ClassDecl(name=Complex, fields=List( ... )?
我正在制作一个修改它的内部html的指令.代码到目前为止:
.directive('autotranslate', function($interpolate) {
return function(scope, element, attr) {
var html = element.html();
debugger;
html = html.replace(/\[\[(\w+)\]\]/g, function(_, text) {
return '<span translate="' + text + '"></span>';
});
element.html(html);
}
})
Run Code Online (Sandbox Code Playgroud)
它的工作原理,除了内部html不是由角度评估.我想触发对子element树的重估.有没有办法做到这一点?
谢谢 :)
假设我从服务器收到一些JSON对象,例如Person对象的一些数据:
{firstName: "Bjarne", lastName: "Fisk"}
Run Code Online (Sandbox Code Playgroud)
现在,我希望在这些数据之上有一些方法,例如用于计算fullName:
fullName: function() { return this.firstName + " " + this.lastName; }
Run Code Online (Sandbox Code Playgroud)
这样我就可以
var personData = {firstName: "Bjarne", lastName: "Fisk"};
var person = PROFIT(personData);
person.fullName(); // => "Bjarne Fisk"
Run Code Online (Sandbox Code Playgroud)
我基本上想要在这里做的是向对象的原型添加一个方法.该fullName()方法是通用的,因此不应添加到数据对象本身.喜欢..:
personData.fullName = function() { return this.firstName + " " + this.lastName; }
Run Code Online (Sandbox Code Playgroud)
......会导致很多冗余; 并且可以说是"污染"数据对象.
将此类方法添加到简单数据对象的当前最佳实践方法是什么?
编辑:
略微偏离主题,但如果上面的问题可以解决,那么就可以做一些很好的伪 - pattern matching就像这样:
if ( p = Person(data) ) {
console.log(p.fullName());
} else if ( d = Dog(data) ) {
console.log("I'm a dog lol. Hear …Run Code Online (Sandbox Code Playgroud) 使用Jasmine,node.js和coffeescript的组合可以开发出哪些好的IDE.
到目前为止,我们正在考虑WebStorm,但它真的很难开始.我们发现很少有关于node.js(和coffeescript)与IDE结合的文档.
还有哪些其他选择?(是否有任何指南可以帮助我们开始/启动和运行?)
编辑:
谢谢 :)
什么是开源Node.js(和Express)项目?如果使用CoffeeScript,那将是一个巨大的优势.
我需要一些灵感.
优选地是IDE.对Subversion/Git的集成支持是一个很大的优势,因为我们是一个由6人组成的团队.
VIM/Emacs是不与其他的是流行的,因为它是非常尴尬,很难上手,它需要努力学习了很多,从我们的项目把焦点之遥.
我们都习惯/熟悉Eclipse,因此类似于Eclipse的IDE也是一个很大的优势.
感谢:D
找到集合中最常见/最常见元素的最佳方法是什么?例如:
list = List(1, 3, 4, 4, 2)
list.mostCommon // => 4 !! This is what I want !!
Run Code Online (Sandbox Code Playgroud)
嗯..什么人可以做的是做groupBy第一,然后map他们通过length,然后选择最大的一个.那么你会得到:
Map(1 -> List(1), 4 -> List(4, 4), 3 -> List(3), 2 -> List(2))
(...)
Map(1 -> 1, 4 -> 2, 3 -> 1, 2 -> 1) // mapped by length. 4 -> 2 since there's two 4s
Run Code Online (Sandbox Code Playgroud)
最后,选择4映射到最高数字(2)的key ().(嵌套问题:最好的方法是什么?).但这对于这么简单的操作似乎有很多工作要做..?
是否有更好/更惯用的方法来做到这一点?
我可以用meteor.js刮掉吗?刚发现cheerio哪种作品非常出色request.我可以将这些用于流星,还是有类似的东西?
你有一个有效的例子吗?
可能重复:
转发引用 - 为什么这段代码会编译?
Scala和前向引用
object Main extends App {
val a = 4
val b = a + c
val c = 5
println(b) // => 4
}
Run Code Online (Sandbox Code Playgroud)
这将打印4作为c显然是0当b被分配.a并且c是价值观,因此它们不应该0在一个时刻,而5在下一个时刻.在Scala中,它们应该是不可变的,对吧?
我不应该至少得到某种警告吗?当然,在上面的例子中,你必须是一个想念它的白痴,但在更复杂的情况下,很难说出它的顺序.
我当然知道我可以使用,lazy val b = ...但如果我认为我把它按正确的顺序排列,当我真的没有时.不是很危险,因为根本没有得到任何警告吗?运行得很好!?这是如何获得通过两者的Scala IDE 和编译器?这是故意的吗?或者这是一个无法修复的错误?:/
:)
根据这个节点样式指南,给闭包一个名字是一个很好的做法:
对
Run Code Online (Sandbox Code Playgroud)req.on('end', function onEnd() { console.log('winning'); });错误
Run Code Online (Sandbox Code Playgroud)req.on('end', function() { console.log('losing'); });
但是,我习惯于思考
function someName() { someStatements(); }
Run Code Online (Sandbox Code Playgroud)
...语法作为创建全局变量someName或window.someName该函数的东西.这真的是一个很好的做法,还是一个非常糟糕的风格指南?
javascript ×5
node.js ×5
coffeescript ×3
scala ×3
express ×2
angularjs ×1
case-class ×1
cheerio ×1
coding-style ×1
ide ×1
jasmine ×1
json ×1
jvm ×1
list ×1
meteor ×1
open-source ×1
pretty-print ×1
prototype ×1
v8 ×1
web-scraping ×1
webstorm ×1