代码之家  ›  专栏  ›  技术社区  ›  vacawama

不使用参数标签调用函数的最短方法?

  •  3
  • vacawama  · 技术社区  · 7 年前

    在Swift中,给定此函数:

    func greet(name: String) {
        print("Hello \(name)!")
    }
    

    正确的称呼方式是这样的:

    greet(name: "Bob")  // "Hello Bob!"
    

    参数标签 name

    greet("Bob")
    

    你得到错误: 调用中缺少参数标签“name:”

    但是把这个功能当作 关闭

    let g = greet; g("Bob")  // "Hello Bob!"
    

    这让我想知道,不使用参数标签调用函数的最简洁的方法是什么?


    用元组包起来?

    我想把函数包装成 元组

    (greet).0("Bob")
    

    但这导致了错误: “(String)->()”类型的值没有成员“0” .

    (greet,greet).0("Bob")  // "Hello Bob!"
    

    所以很明显,Swift将1值的简单元组视为值本身。

    给元组参数一个标签有效:

    (g:greet).g("Bob")  // "Hello Bob!"
    (g:greet).0("Bob")  // "Hello Bob!"
    

    把它排成一列?

    到目前为止,我找到的最简洁的方法是将函数放入数组中:

    [greet][0]("Bob")  // "Hello Bob!"
    

    它只使用5个字符 greet("Bob") 如果成功了 .

    greet(name:) 不使用参数标签的函数?

    0 回复  |  直到 7 年前