小编Har*_*old的帖子

为什么分隔符在TypeScript TypeMemberList分号中而不是逗号?

这是一个打字稿界面:

interface A {
    l: { x: string; y:number }
}
Run Code Online (Sandbox Code Playgroud)

但这(类似的事情)会产生错误:

interface A {
    l: { x: string, y:number }
}

// => Error: ';' expected.
Run Code Online (Sandbox Code Playgroud)

在规范的第37页:http: //www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf

我看到确实指出a ;应该出现在那里,但是来自JavaScript的对象 - 文字中间的分号看起来是错误的.

这个决定是为了避免解析器中的歧义,还是出于其他原因?

grammar specifications typescript

34
推荐指数
1
解决办法
5670
查看次数

许多具有相同几何和材质的网格,我可以改变它们的颜色吗?

我有大量(〜1000)THREE.Mesh已经从同一构造的对象THREE.Geometry和THREE.MeshPhongMaterial(其具有地图).

我想单独着色(着色)这些对象.

天真地,我尝试更改mesh.material.color属性,但是在任何对象上更改此属性会立即更改所有对象的颜色.这是有道理的,因为在所有对象之间只共享一种材料.

我的下一个想法是THREE.MeshPhongMaterial为每个对象创建一个单独的.所以,现在我有大量的THREE.Mesh对象是由相同的构造THREE.Geometry,但有个体THREE.MeshPhongMaterials(共享相同的纹理).这允许我单独更改颜色,但性能更差.Chrome配置文件显示应用程序花费大量时间进行物理操作,例如切换纹理.

材质颜色在着色器中只是一个统一的颜色.所以,更新那件制服应该很快.

问题:有没有办法从网格级别覆盖材质颜色?

如果有,我相信我可以在我的所有物品中分享材料并恢复我的表现,同时仍然单独改变颜色.

[我在v49和v54上测试过,它们具有相同的性能和降级]

更新:我已经构建了一个测试用例,由此产生的性能下降比我想象的要小,但仍然是可测量的.

这是两个链接:

在第一种情况下,只有两种材料,在第二种情况下,每个立方体都有自己的材料.我在这台机器上测量第一种情况的帧率为53fps,第二种情况的帧率为46fps.这大约下降了15%.

在这两种情况下,每个立方体的材料颜色都会发生变化.在有许多材料的情况下,我们实际上看到每个立方体都有它自己的颜色,在只有两种材料的情况下,我们看到它们都具有相同的颜色(如预期的那样).

performance share colors material three.js

18
推荐指数
2
解决办法
3819
查看次数

在Mac上构建F#.fsproj(Mono)

我有一个来自在Windows上开发的F#项目的.fsproj(和.sln),我想在Mac上构建.

我用Mono构建了几个单源文件F#程序,这很棒.不幸的是,这个.fsproj并不重要,因为有几个源文件和许多引用.

设计命令行来手动构建项目似乎并不好玩.

是否有工具可以分析.sln/.fsproj并提供正确的命令行?或者也许只是从.sln/.fsproj构建?

如果可能的话,我想在没有MonoDevelop或SharpDevelop的情况下这样做,尽管这些方面的答案是受欢迎的.

macos mono f# projects-and-solutions build

6
推荐指数
1
解决办法
1306
查看次数

Firebase中是否存在(或已经考虑过)"合并"或"批量"设置?

在今天使用Firebase进行更多编程时,我发现自己希望获得以下几个功能:

1)合并集:

假设我有一个ref具有该值的firebase {a:1,b:2,c:3}.

如果我做了类似ref.set({a:-1,b:-2})新值的事情(毫不奇怪){a:-1,b:-2}.

相反,想象一下ref.mergeSet({a:-1,b:-2})哪个会产生ref值的结果 {a:-1,b:-2,c:3}.

现在,我意识到,我可以做这样的事情ref.child("a").set(-1),并ref.child("b").set(-2)为实现这一结果,但至少在某些情况下,我宁愿只得到我的一个单一的呼叫.on()处理程序.

这是我的第二个想法.

2)批量设置:

在我的应用程序中,我想要一种强制任意数量的调用的方法.set,只能.on在其他客户端中调用一次.就像是:

ref.startBatch()
ref.child("a").set(1)
ref.child("b").set(2)
....
ref.endBatch()
Run Code Online (Sandbox Code Playgroud)

在批处理模式下,.set不会导致调用.on,而是调用.on所有调用的最小数量.endBatch.


我很乐意承认这些想法很新,如果它们与Firebase的现有架构功能发生冲突我也不会感到惊讶,但我认为无论如何我都会分享它们.我发现在使用Firebase时,我不得不花费更多时间来确保客户端之间的一致性,而不是我预期的.

再次感谢,并保持伟大的工作.

firebase

5
推荐指数
1
解决办法
940
查看次数

Lilypond 警告是什么:“未找到可行的初始配置:可能找不到良好的光束坡度”?

这段代码:

\version "2.18.2"

lh = { \change Staff = "down" \stemUp }
rh = { \change Staff = "up" \stemDown }

\new PianoStaff <<
  \new Staff = "up" {
    \new Voice {
      \numericTimeSignature
      \lh a16
      \rh e' a'
      \lh a
      \rh e' a'
      \lh a
      \rh e' a'
      \lh a
      \rh e' a'
      \lh a
      \rh e' b' e'

      \lh a
      \rh e' a'
      \lh a
      \rh e' a'
      \lh a
      \rh e' a'8.
      \lh b16 c'
      \rh e' g' …
Run Code Online (Sandbox Code Playgroud)

lilypond

5
推荐指数
1
解决办法
320
查看次数

对C#中任意对象的数学运算

我正在用C#实现玩具语言的翻译,为了用这种语言做数学,我想实现这样的函数:

public static object Add( object a, object b )
{
  // return the sum of a and b
  // each might be int, double, or one of many other numeric types
}
Run Code Online (Sandbox Code Playgroud)

我可以想象一个非常愚蠢和糟糕的实现这个函数的大量分支基于a和b的类型(使用is运算符)和一堆强制转换,但我的直觉是有更好的方法.

您认为这个功能的良好实现是什么?

c# object

4
推荐指数
2
解决办法
1877
查看次数