在 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 标签描述也说:
命名参数使您能够通过将参数与参数名称而不是参数在参数列表中的位置相关联来为特定参数指定参数。
我尝试了一些示例代码:
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:
测试此线程是否存活.如果线程已经启动并且尚未死亡,则该线程处于活动状态.
这些对我来说都不是很有说服力.