小编mk.*_*mk.的帖子

类型断言与TypeScript中较新的`as`运算符之间有什么区别?

TypeScript规范调用类型断言之间有什么区别:

var circle = <Circle> createShape("circle");
Run Code Online (Sandbox Code Playgroud)

较新的 as运营商:

var circle = createShape("circle") as Circle;
Run Code Online (Sandbox Code Playgroud)

这两者通常用于编译时转换?

casting typescript

104
推荐指数
2
解决办法
3万
查看次数

opengl纹理坐标如何工作?

我知道在每次调用glVertex之前我必须调用以下其中一个:

glTexCoord(0,0); 
glTexCoord(0,1); 
glTexCoord(1,1); 
glTexCoord(1,0); 
Run Code Online (Sandbox Code Playgroud)

但我不知道他们的意思.但是,我知道,如果我乘以(或者是那个除法?)右侧(或者它是所有的?)两个,我的纹理会扩展,如果我相反,我的纹理会重复两次.我已经设法通过应用操作来编码纹理图集,直到它工作.但我对正在发生的事情有充分的了解.为什么划分它们会影响图像,为什么反转它们会反映它?纹理坐标如何工作?

opengl

57
推荐指数
4
解决办法
8万
查看次数

将git repo移动到第二台计算机?

我有一个简单的本地git仓库的项目,我想这个项目(文件夹等)移动到另一台计算机,并从现在开始工作.我不想在旧机器上留下任何东西(当然除了我的其他git项目).我希望它好像我一直在新机器上工作.

我可以简单地将所有文件移到该计算机上,还是键存在问题?我应该在两台机器上使用相同的密钥吗?如果只是移动所有文件夹无法完成,我该怎么办?我想避免设置和学习使用服务器的麻烦,因为这看起来很复杂,我不想改变我的工作流程.

git

54
推荐指数
2
解决办法
3万
查看次数

OpenGL中的常态是什么?

我听说我应该使用法线而不是颜色,因为颜色已被弃用.(这是真的吗?)法线与光的反射有关,但我找不到清晰直观的解释.什么是正常的?

opengl colors light normals

16
推荐指数
2
解决办法
2万
查看次数

将泛型隐式转换为包装器

我想在返回时自动将值包装在通用容器中(我知道这并不总是可取的,但对我的情况来说这是有道理的).例如,我想写:

public static Wrapper<string> Load() {
    return "";
}
Run Code Online (Sandbox Code Playgroud)

我可以通过在Wrapper类中添加以下内容来完成此操作:

public static implicit operator Wrapper<T>(T val) {
    return new Wrapper<T>(val); 
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我尝试在IEnumerable这里(以及在ideone)转换完整代码时,这会失败:

public class Test {
    public static void Main() {
        string x = "";
        Wrapper<string> xx = x;

        string[] y = new[] { "" };
        Wrapper<string[]> yy = y;

        IEnumerable<string> z = new[] { "" };
        Wrapper<IEnumerable<string>> zz = z; // (!)
    }
}
public sealed class Wrapper<T> {
    private readonly object _value;
    public Wrapper(T …
Run Code Online (Sandbox Code Playgroud)

c# generics implicit-conversion

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

什么时候应该在JavaScript/TypeScript中使用`export default`?

如果我们指定默认导出:

export class Foo {}
export default Foo;
Run Code Online (Sandbox Code Playgroud)

然后我们可以在导入期间省略花括号(如本答案中所述):

import { Foo } from "foo"; // becomes:
import Foo from "foo";
Run Code Online (Sandbox Code Playgroud)

那很好,但是在特殊情况下是否有任何非风格的理由偏爱另一个?例如,是否存在某些约定,或者某些约定与某些工具不兼容,或者是否具有不同的含义?

(基于这个讨论和其他人,我的理解是,export default可能已经出现了一种处理单个主要对象(如$)的导出的方法,现在由import * as foo from "foo"它处理.此外,似乎默认导入语法不强制执行naming(import fooAlias from "foo"),而标准导入import { fooAlias } from "foo"将是一个编译错误,除非别名是explicit(Foo as fooAlias).除此之外,我还没有找到关于何时应该使用其中一个的详细信息.)

javascript typescript ecmascript-6

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

在js中实例化对象之前的'this'是什么?

我不明白以下几点:

var x = function() {
    this.foo="foo";
    return function() {
        this.bar = "bar";
        return foo+bar;
    };
}(); // returns inner

alert(x()); // 'foobar', so both 'this' variables are set
alert(x.bar); // undefined - but wasn't it used correctly?
alert(new x().bar); // ok, works
Run Code Online (Sandbox Code Playgroud)

我的假设是第一次生成并使用默认的'this'范围/变量映射,然后当调用'new'时,通过并返回带有新'this'的新对象(function?).或者,也许x不是一个合适的对象?但是,那么'这个'怎么会被设置并用来制作'foobar'?

了解这一点我需要知道什么?

javascript scope this

4
推荐指数
1
解决办法
454
查看次数

Eclipse热代码替换不更新

为什么简单的代码更改无法更新?在进行大的更改时,"热代码替换"消息会像往常一样出现,但更改println字符串或注释掉方法调用有时无效,应用程序必须重新启动才能应用更改.我认为它可能与本机调用有关,但除此之外似乎没有模式.

eclipse debugging

4
推荐指数
1
解决办法
3897
查看次数

Java拆分 - 错误的长度

为什么我收到长度为3而不是4?我怎样才能解决这个问题以获得合适的长度?

String s="+9851452;;FERRARI;;";
String split[]=s.split("[;]");
System.out.println(split.length);
Run Code Online (Sandbox Code Playgroud)

java split

4
推荐指数
1
解决办法
680
查看次数

javascript选择/范围坐标

当用户拖动鼠标时,我想在文本选择的初始或终端角上绝对定位div.不幸的是,Range只提供索引位置,而不是x/y坐标.我认为可能有一种方法可以使用range.insertNode,但仅限于一方.(这也可能有助于某人在满足的情况下定位一个自动完成的盒子.)

如何获取文本选择或文本光标的x/y坐标?

javascript

3
推荐指数
1
解决办法
5175
查看次数

用glDrawArrays绘制交错的VBO

我目前正在使用glDrawElements来渲染使用多个VBO(顶点,颜色,纹理和索引).我发现很少有顶点共享,所以我想切换到glDrawArrays和一个交错的VBO.

我一直无法找到一个明确的例子:1)创建一个交错的VBO并为其添加四边形或三边形(顶点,颜色,纹理),以及2)使用glDrawArrays绘制它所需的任何内容.这两个步骤的代码是什么?

opengl vbo

3
推荐指数
1
解决办法
6380
查看次数

检查代码是否被更改

每当我的代码发生变化时,我想调用一些昂贵的更新方法.我在Eclipse中点击ctrl-s,这会触发文件保存和热代码替换,我的程序检查文件是否已保存,花费大约5秒钟处理数字,然后更新屏幕.

我正在使用这个东西,我每秒调用几次:

public static long lastSourceUpdate=0;
private static boolean wasUpdated() {
    File source = new File("/home/user/workspace/package/AClass.java"); 
    long t = source.lastModified();
    if (t>lastSourceUpdate+2000) { // wait for hcr
        lastSourceUpdate=t;
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这种方法存在问题:

  1. 检查文件是不可靠的,因为编译和热代码替换可以在文件更改后几秒钟完成.这就是为什么有超过2000毫秒的延迟.虽然该方法返回true,但我刚刚更改的代码未更新 - 或者更糟糕的是,Eclipse在数字运算中途更新了它,结果无可救药地被扰乱.
  2. 在任何情况下检查文件都是一个黑客,它应该检查类.磁盘可能不需要涉及.
  3. 它只检查一个类,但我有时想检查一个完整的包,或者对它没有任何改变.文件更改时,包目录的lastModified不会更改.对文件夹/包进行递归扫描会起作用,但如果包很大,则不是很优雅.
  4. 看起来很难看.

那么,检查代码何时更改的最佳方法是什么?或许反思?serialVersionUID检查?它不像类本身有compilationDate字段 - 或者它们呢?Eclipse更新了一些秘密价值吗?是否有Eclipse随每次保存而更改的文件?

谢谢你检查一下.

java

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

Java nio,检查通道是否准备好进行读,写

而不是以通常的方式使用选择器,对于每个就绪通道,可​​以确定并发送消息,我想选择当前准备好的连接并在那里发送消息.

据推测,这可以通过将所有通道投入选择器进行读取并将它们标记为准备好进行读取(如果它们出来),然后执行相同的写入,然后从我已标记为准备好的那些中进行选择来完成.

这是一个好主意,有没有更好的方法来做到这一点,我应该注意什么?例如,Rox教程指出"如果你试图混合OP READ和OP WRITE,你很快就会遇到麻烦.如果你这样做,Sun Windows实现就会陷入僵局." 这里有类似的陷阱吗?实施的最佳方式是什么:

boolean isReadyForRead(SocketChannel c);
boolean isReadyForWrite(SocketChannel c);
Run Code Online (Sandbox Code Playgroud)

java nio

0
推荐指数
1
解决办法
3871
查看次数