代码之家  ›  专栏  ›  技术社区  ›  Ben Lachman

Swift条件#如果在表达式列表中编译失败

  •  0
  • Ben Lachman  · 技术社区  · 7 年前

    如果有一个相当简单的案例,Swift(4.2版)将不尊重 #if 条件编译块(如果它出现在表达式列表中)。

    let params = [
      ("a", "1"),
      ("b", "2"),
    #if FOO
      ("c", "3"),
    #endif
      ("d", "4")]
    

    这将产生错误: Expected expression in container literal

    这似乎是一个可笑的常见情况,似乎没有违反任何法律 Swift docs on Compiler Control . 我可以通过声明 params 作为一个 var 和附加条件参数,但这在函数调用等其他情况下是不可能的。

    0 回复  |  直到 7 年前