小编Ale*_* N.的帖子

如果 swift 还需要参数顺序,为什么它需要参数名称?

在 Swift 中,当你调用一个函数时,你需要标记参数,除非函数的作者明确允许你不要这样做。在语言设计方面是否有原因?我一直认为参数标签是一种允许调用者以任何对他们有意义的方式对参数进行排序的好方法,但这种方式感觉就像很多无意义/无用的样板。

例子:

如果我们这样定义 makeDog 函数:

makeDog(legs: int, name: String)->Dog{}
Run Code Online (Sandbox Code Playgroud)

那么它必须像这样调用:

makeDog(legs: 4, name: "fido")
Run Code Online (Sandbox Code Playgroud)

并且不能这样调用(编译器错误):

makeDog(name: "fido", legs: 4)
Run Code Online (Sandbox Code Playgroud)

写后笔记:即使是命名参数的 StackOverflow 标签描述也说:

命名参数使您能够通过将参数与参数名称而不是参数在参数列表中的位置相关联来为特定参数指定参数。

language-design named-parameters swift

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

Thread.start()返回时是否保证线程已启动?

我尝试了一些示例代码:

Thread thread = new TestThread();
thread.start();
thread.isAlive();
Run Code Online (Sandbox Code Playgroud)

在我看来,isAlive()调用返回false的唯一方法是线程已经完成.这是真的?

Java 7 JavaDoc for start:

导致此线程开始执行; Java虚拟机调用此线程的run方法.结果是两个线程并发运行:当前线程(从调用start方法返回)和另一个线程(执行其run方法).

不止一次启动一个线程永远不合法.特别是,一旦完成执行,线程可能无法重新启动.

适用于isAlive的Java 7 JavaDoc:

测试此线程是否存活.如果线程已经启动并且尚未死亡,则该线程处于活动状态.

这些对我来说都不是很有说服力.

java multithreading

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