gpt4 book ai didi

swift - 如何接受 CGFloat 或 CGFloats 数组作为函数参数?

转载 作者:可可西里 更新时间:2023-11-01 00:21:04 27 4
gpt4 key购买 nike

我有一个自动布局便利功能,可以将 View 堆叠在彼此之上。对于我的间距参数,我想允许:

  • View 之间的间距为零
  • 或单个CGFloat(所有 View 均匀分布)
  • CGFloat 数组( View 之间的不同空间)

但是,我不确定如何定义这个论点。

// Ambiguous
func myconstrainer(_ views : [UIView], spacing : CGFloat = 0){}
func myconstrainer(_ views : [UIView], spacing : [CGFloat]? = nil){}

// Messy
func myconstrainer(_ views : [UIView], spacingA : CGFloat = 0, spacingB: [CGFloat]? = nil){}

最佳答案

您也可以像这样尝试可变数量的参数:

func myconstrainer(_ views: [UIView], spacing: CGFloat...) {
myconstrainer(views, spacing: spacing)
}

并提供一个简单的重载来处理数组:

func myconstrainer(_ views: [UIView], spacing: [CGFloat]) {
// Implementation...
}

因此,在使用均匀间距时,您不需要将单个元素放在括号中。

调用站点:

myconstrainer([view1, view2, view3])
myconstrainer([view1, view2, view3], spacing: 123)
myconstrainer([view1, view2, view3], spacings: 1, 2, 3)
myconstrainer([view1, view2, view3], spacings: [1, 2, 3])

一些不明显的注意事项:

  • 通过使用零参数调用 CGFloat... 可以很好地覆盖默认情况;
  • 而且,由于这个参数实际上是一个数组,我们可以将它转发给另一个没有括号的方法。

关于swift - 如何接受 CGFloat 或 CGFloats 数组作为函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44012556/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com