【问题标题】:Swift: Why no labeled arguments in this situation?斯威夫特:为什么在这种情况下没有标记参数?
【发布时间】:2015-10-08 02:52:31
【问题描述】:

对于这个代码

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString

我很快就会忘记第三个参数代表什么。

出于某种原因 Swift (2.0) 不允许我这样标记参数:

let documentsPath = NSSearchPathForDirectoriesInDomains(directory: .DocumentDirectory,
domainMask: .UserDomainMask, expandTilde: true)[0] as! NSString  // error

我真的希望我错过了什么!
或者更确切地说:我真的希望我不必错过 Objective-C 的最佳特性。

【问题讨论】:

    标签: swift swift2 named-parameters


    【解决方案1】:

    这与定义函数的方式有关。如果它没有使用命名参数定义,则不能使用命名参数调用它。

    NSSearchPathForDirectoriesInDomains 是 C 风格的函数(不是方法)或生成内联代码的编译器宏。 (在我看来它是一个 C 函数。)它们都不接受命名参数,所以你不能。

    如果您真的想远离未命名的参数,请创建一个实用程序类,该类提供接受命名参数的胶水代码,然后调用相关函数。这样你就可以将旧式代码封装在一个地方。额外的函数调用会有(微小的)性能成本,但几乎在所有情况下都不会引起注意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多